android端获取网络数据添加到二级列表ExpandableListView

//模拟数据,转换为二维数组格式

public class ExUtils {

    /**
     * jsonarray格式转成list格式,若为空返回null
     * @param array2
     * @return
     * @throws JSONException
     */
        private static ArrayList getListValue()
                throws JSONException {
            ArrayList list = new ArrayList();

            for (int i = 0; i < 5; i++) {
                String s="xigua"+i;
                list.add(s);
            }
            return list;
        }

        // ArrayList转成一维数组
        private static String[] getArrayValue(ArrayList list2) {
            String str[] = new String[0];
            if (list2 != null) {
                str = list2.toArray(new String[list2.size()]);
            }
            return str;
        }



        /**
         * 获取子项目方法
         * 
         * @return
         */
        public static String[][] getItemChild() {
            String[] arr1, arr2, arr3;
            String[][] arrTwo = null;
//          // 从网页获取数据
            ArrayList list1, list2, list3;
//
//          HttpClient client = new DefaultHttpClient();
//          HttpPost post = new HttpPost(urlPath);
            try {
//              InputStream responseStream = client.execute(post).getEntity()
//                      .getContent();
//              // 记得转换成gbk编码
//              BufferedReader bufferedReader = new BufferedReader(
//                      new InputStreamReader(responseStream, "UTF-8"));
//              String webContentString = bufferedReader.readLine();
//              // json解析**************************
//
//              JSONObject object = new JSONObject(webContentString);
//
//              JSONArray array1 = object.getJSONArray("item1");
//              JSONArray array2 = object.getJSONArray("item2");
//              JSONArray array3 = object.getJSONArray("item3");

                arrTwo = new String[3][];

                // json转成list
                list1 = getListValue();
                list2 = getListValue();
                list3 = getListValue();

                // 转成一维数组
                arr1 = getArrayValue(list1);
                arr2 = getArrayValue(list2);
                arr3 = getArrayValue(list3);

                // 用arraylis存儲得到的非空list
                ArrayList list = new ArrayList();
                if (arr1 != null && arr1.length != 0) {
                    list.add(arr1);
                }
                if (arr2 != null && arr2.length != 0) {
                    list.add(arr2);
                }
                if (arr3 != null && arr3.length != 0) {
                    list.add(arr3);
                }
                // 动态生成二维数组
                int count = 0;
                for (int i = 0; i < list.size(); i++) {
                    arrTwo[count++] = list.get(i);
//                  count++;
                }
                // 测试打印二维数组的每一行
//              printOne(arrTwo[0]);
//              printOne(arrTwo[1]);
//              printOne(arrTwo[2]);


//              printTwo(arrTwo);

            } catch (Exception e) {
                System.out.println("解析子项目出错!");
            }
            return arrTwo;
        }
}

//MainActivity中调用,实现二级列表ExpandableListview

package com.example.aa;

import com.example.aa.R.string;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//      requestWindowFeature(Window.FEATURE_NO_TITLE);

      final ExpandableListAdapter adapter = new BaseExpandableListAdapter() {
          //设置组视图的图片
          int[] logos = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher};
          //设置组视图的显示文字
          private String[] generalsTypes = new String[] { "宝一", "宝二", "宝三" };
          //子视图显示文字
          /*private String[][] generals = new String[][] {
                  { "宝一孩儿1", "宝一孩儿2", "宝一孩儿3", "宝一孩儿4", "宝一孩儿5", "宝一孩儿6" },
                  { "宝二孩儿1", "宝二孩儿2", "宝二孩儿3", "宝二孩儿4", "宝二孩儿5", "宝二孩儿6" },
                  { "宝三孩儿1", "宝三孩儿2", "宝三孩儿3", "宝三孩儿4", "宝三孩儿5" }

          };*/

          private String[][] generals=ExUtils.getItemChild();
          //子视图图片
          public int[][] generallogos = new int[][] {
                  { R.drawable.ic_launcher, R.drawable.ic_launcher,
                          R.drawable.ic_launcher, R.drawable.ic_launcher,
                          R.drawable.ic_launcher, R.drawable.ic_launcher },
                  { R.drawable.ic_launcher, R.drawable.ic_launcher,
                          R.drawable.ic_launcher, R.drawable.ic_launcher,
                          R.drawable.ic_launcher, R.drawable.ic_launcher },
                  { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,
                          R.drawable.ic_launcher, R.drawable.ic_launcher } };

          //自己定义一个获得文字信息的方法
          TextView getTextView() {
              AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                      ViewGroup.LayoutParams.FILL_PARENT, 64);
              TextView textView = new TextView(
                      MainActivity.this);
              textView.setLayoutParams(lp);
              textView.setGravity(Gravity.CENTER_VERTICAL);
              textView.setPadding(36, 0, 0, 0);
              textView.setTextSize(20);
              textView.setTextColor(Color.BLACK);
              return textView;
          }


          //重写ExpandableListAdapter中的各个方法
          @Override
          public int getGroupCount() {
              // TODO Auto-generated method stub
              return generalsTypes.length;
          }

          @Override
          public Object getGroup(int groupPosition) {
              // TODO Auto-generated method stub
              return generalsTypes[groupPosition];
          }

          @Override
          public long getGroupId(int groupPosition) {
              // TODO Auto-generated method stub
              return groupPosition;
          }

          @Override
          public int getChildrenCount(int groupPosition) {
              // TODO Auto-generated method stub
              return generals[groupPosition].length;
          }

          @Override
          public Object getChild(int groupPosition, int childPosition) {
              // TODO Auto-generated method stub
              return generals[groupPosition][childPosition];
          }

          @Override
          public long getChildId(int groupPosition, int childPosition) {
              // TODO Auto-generated method stub
              return childPosition;
          }

          @Override
          public boolean hasStableIds() {
              // TODO Auto-generated method stub
              return true;
          }

          @Override
          public View getGroupView(int groupPosition, boolean isExpanded,
                                   View convertView, ViewGroup parent) {
              // TODO Auto-generated method stub
              LinearLayout ll = new LinearLayout(
                      MainActivity.this);
//              ll.setOrientation(0);
              ImageView logo = new ImageView(MainActivity.this);
              logo.setImageResource(logos[groupPosition]);
              logo.setPadding(50, 0, 0, 0);
              ll.addView(logo);
              TextView textView = getTextView();
              textView.setTextColor(Color.BLACK);
              textView.setText(getGroup(groupPosition).toString());
              ll.addView(textView);

              return ll;
          }

          @Override
          public View getChildView(int groupPosition, int childPosition,
                                   boolean isLastChild, View convertView, ViewGroup parent) {
              // TODO Auto-generated method stub
              LinearLayout ll = new LinearLayout(
                      MainActivity.this);
//              ll.setOrientation(0);
              ImageView generallogo = new ImageView(
                      MainActivity.this);
              generallogo
                      .setImageResource(generallogos[groupPosition][childPosition]);
              ll.addView(generallogo);
              TextView textView = getTextView();
              textView.setText(getChild(groupPosition, childPosition)
                      .toString());
              ll.addView(textView);
              return ll;
          }

          @Override
          public boolean isChildSelectable(int groupPosition,
                                           int childPosition) {
              // TODO Auto-generated method stub
              return true;
          }

      };

      ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.list);
      expandableListView.setAdapter(adapter);


      //设置item点击的监听器
      expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

          @Override
          public boolean onChildClick(ExpandableListView parent, View v,
                                      int groupPosition, int childPosition, long id) {

              Toast.makeText(
                      MainActivity.this,
                      "你点击了" + adapter.getChild(groupPosition, childPosition),
                      Toast.LENGTH_SHORT).show();

              return false;
          }
      });
  }
}

感谢博主:http://blog.csdn.net/yhm2046/article/details/8601948



你可能感兴趣的:(知识总结,Android知识)