Android:从外部按钮单击控制listview项

时间:2018-02-13 07:18:53

标签: android listview android-arrayadapter

我的片段中有一个Next按钮和listview。 当我点击外部“下一步”时,我必须更改列表项的背景, 第二次单击它应该转到列表中的下一个项目并更改背景。 当我点击下一步它是在最后一行它应该来到第一行项目。

下面是我的简单ArrayAdapter

public class MyListAdapter extends ArrayAdapter<String> {

    private List<String> list;
    private Context mContext;

    public MyListAdapter(Context context, int resource,
            int textViewResourceId, List<String> objects) {
        super(context, resource, textViewResourceId, objects);
        list = objects;
        mContext = context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return super.getItem(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View mView = super.getView(position, convertView, parent);
        return mView;
    }
}

2 个答案:

答案 0 :(得分:0)

- 维护一个指针(从0开始),它记录了更改背景的listview项的位置。

每次下一次点击,如果它小于列表的左数,则将其增加1并调用notifydatasetchanged,否则将其设置为0并调用notifydataSetChanged。

- 在适配器类中,在getview中,如果位置小于或等于指针,则将背景设置更改为默认值。

答案 1 :(得分:0)

一种方法是使用getChildAt() 你应该保持当前的指数 如果用户点击下一步 - &gt;

private int index = 0;
public void nextButtonClicked(){
    updateViewAt(index,false)
    if(index==(listView.getCount()-1)){
      index = 0
    }else{
      index++
   }
    updateViewAt(index,true)
}

private void updateViewAt(int index,boolean isSelected){
    View v = listView.getChildAt(index - 
        listView.getFirstVisiblePosition());

    if(v == null)
       return;

    TextView textView= (TextView) v.findViewById(R.id.text_view);
if(isSelected){
//TODO if view is selected functionality
}else{
//  TODO if view is NOT selected functionality
}
}