处理单击自定义ArrayAdapter和ListView

时间:2016-06-08 18:43:54

标签: android listview android-arrayadapter onclicklistener

我有一个ArrayList,它有一些String变量,我有一个自定义的ArrayAdapter,我从ArrayList填充。现在,当显示列表中的列表和列表中的项目时,我希望程序执行某些操作但我不知道该怎么做。我看了几个例子,但我不知道究竟在哪里放置代码。所以这是我的代码,你能告诉我该做什么以及在哪里做吗?

MainActivity.java

public class MainActivity extends AppCompatActivity {
private ArrayAdapter<String> listAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    updateList(listOfItems);
}
public void updateList(ArrayList<String> possibleWords){
    listAdapter = new CustomListAdapter(this, R.layout.custom_list,possibleWords);
    android.R.layout.simple_list_item_1, possibleWords);
    final ListView listView = (ListView)findViewById(R.id.listview);
    listView.setAdapter(listAdapter);
}

CustomListAdapter.java类

public class CustomListAdapter extends ArrayAdapter {

private Context mContext;
private int id;
private List<String> items ;

public CustomListAdapter(Context context, int textViewResourceId , List<String> list )
{
    super(context, textViewResourceId, list);
    mContext = context;
    id = textViewResourceId;
    items = list ;
}

@Override
public View getView(int position, View v, ViewGroup parent)
{
    View mView = v ;
    if(mView == null){
        LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = vi.inflate(id, null);
    }
    return mView;
}
}

以下是输出结果的示例图像

Sample output

所以当点击“act”或“cat”时,我想做点什么,但我不知道如何处理点击以及将代码放在我想做的事情的位置。

2 个答案:

答案 0 :(得分:0)

将以下代码放在您的主要活动

listview.setOnItemClickListener(new OnItemClickListener()
   {
      @Override
      public void onItemClick(AdapterView<?> adapter, View v, int position,
            long arg3) 
      {
              //do your work here
      }
   });

答案 1 :(得分:-1)

请在适配器中添加点击监听器,如下所示

mView.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};