Heim  >  Fragen und Antworten  >  Hauptteil

android - 有没有代替ListView,GridView的好用的第三方库呢?

阿神阿神2765 Tage vor521

Antworte allen(5)Ich werde antworten

  • 阿神

    阿神2017-04-17 15:46:19

    这只能说你对ListView的掌握还不够,ListView依赖于数据适配器Adapter的数据衔接,数据修改也存在于数据源或者数据适配器中,不是那你重新生成数据适配器。

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-17 15:46:19

    使用适配器 Adapter 的 notifyDataSetChanged() 方法去更新。。。
    举个栗子:

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            button_add = (Button) findViewById(R.id.button);
    
            //  1.绑定GridView
            gridView = (GridView) findViewById(R.id.gridView);
    
            //  2.创建List资源类对象:
            list = new ArrayList<Map<String, Object>>();
            for (int i=0; i<images.length; i++) {
                Map<String,Object> map = new HashMap<String, Object>();
                map.put("imageid",images[i]);
                map.put("words",words[i]);
                list.add(map);
            }
    
            //  3.创建一个 SimpleAdapter
            simpleAdapter = new SimpleAdapter(
                    this,   //上下文
                    list,   //资源对象
                    R.layout.simple_adapter_cell,
                    new String[] {"imageid","words"},
                    new int[] {R.id.imageView,R.id.textView}                
            );
    
            //  4.加载到GridView中
            gridView.setAdapter(simpleAdapter);
    
            //  5.设置 GridView的点击事件:
            gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.e("AdapterView",Integer.toString(parent.getId()));
                    Log.e("View",Integer.toString(view.getId()));
                    Log.e("position",Integer.toString(position));
                    Log.e("id", Long.toString(id));
                }
            });
    
            //  6.GridView 的动态更新
            button_add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    //  6.1 给资源类添加新的 Map
                    Map<String,Object> temp = new HashMap<String, Object>();    //新建Map
                    temp.put("imageid",images[0]);                              //添加新的资源
                    temp.put("words","P");
                    list.add(temp);
    
                    //  6.2 通知 GridView 更新
                    simpleAdapter.notifyDataSetChanged();
    
                }
            });
    
    
        }

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:46:19

    直接在数据源List中add,然后通知Adapter去更新数据,adapter.notifyDataSetChanged();

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-17 15:46:19

    将新数据添加到适配器的list中 然后adapter.notifiedxxx就行啦

    Antwort
    0
  • PHP中文网

    PHP中文网2017-04-17 15:46:19

    recyclerView 配合staggergroidlayoutmanager
    自己继承adapter
    用adapter.notifydatachanged()来通知更新

    Antwort
    0
  • StornierenAntwort