美文网首页
多条目加载

多条目加载

作者: 安多人 | 来源:发表于2018-03-29 05:06 被阅读0次

当在一个listView中需要几个风格不一样的条目时,就属于多条目加载,多条目加载比较简单,就是在ListView的Adapter中实现两个函数,分别是 public int getViewTypeCount() {} public int getItemViewType(int position) {},然后在getView函数中通过判断getItemViewType函数的返回值,来实现不同的View即可。具体代码如下

public class MainActivity extends AppCompatActivity {

    private ArrayList<String> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ListView listView = findViewById(R.id.listView);
        list = new ArrayList<>();
        for (int i = 0;i<10;i++){
            list.add("Linhan"+i);
        }
        listView.setAdapter(new BaseAdapter() {//偷个懒,没实现自己的Adapter,直接实现一个BaseAdapter
            final int TYPE_1=0;//定义两个常亮
            final int TYPE_2=1;
           
            @Override
            public int getViewTypeCount() {//指定我们有多少个布局,也就是我们有多少个视图
                return 2;
            }

            @Override
            public int getItemViewType(int position) {//指定我们想要实现的布局类型

                if (position%2==0){//当条目位置为0、2、4、6、...时,我们实现布局1
                    return TYPE_1;
                }else {//当条目位置为1、3、5、7、...时,我们实现布局2
                    return TYPE_2;
                }
            }

            @Override
            public int getCount() {
                return list.size();
            }

            @Override
            public Object getItem(int i) {
                return list.get(i);
            }

            @Override
            public long getItemId(int i) {
                return i;
            }

            @Override
            public View getView(int i, View view, ViewGroup viewGroup) {
                int type = getItemViewType(i);
                switch (type){
                    case TYPE_1://实现布局为item1的view
                        view = View.inflate(MainActivity.this,R.layout.item1,null);
                        break;
                    case TYPE_2://实现布局为item2的view
                        view = View.inflate(MainActivity.this,R.layout.item2,null);
                        break;
                }

                return view;
            }
        });
    }
}

相关文章

网友评论

      本文标题:多条目加载

      本文链接:https://www.haomeiwen.com/subject/nypycftx.html