首先,我是android编程的初学者。所以不要太苛刻:P
无论如何,我有一个回收ListView,包含一个图像和每个列表项的文本。 让我们说有100种不同的物品。点击的每个项目都会引导我进入我的活动" DetailActivity.class"使用" detail_layout.xml"。现在我想根据点击的项目来配置这种布局。
TestActivity.java:
ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i <= 99; i++) {
list.add(detail_array[i]);
//detail_array[] contains Strings which are used to add Items to the list.
}
private ListView myList = (ListView)findViewById(R.id.list);
myList.setAdapter(new MyCustomAdapter(TestActivity.this,list));
MyCustomAdapter.java:
public class MyCustomAdapter extends BaseAdapter {
private ArrayList<String> mListItemsTV;
private LayoutInflater mLayoutInflater;
public View getView(int position, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = mLayoutInflater.inflate(R.layout.list_item, null);
holder.itemName = (TextView) view.findViewById(R.id.list_item_text_view);
view.setTag(holder);
} else {
holder = (ViewHolder)view.getTag();
}
String stringItem = mListItemsTV.get(position);
if (stringItem != null) {
if (holder.itemName != null) {
holder.itemName.setText(stringItem);
ImageView imageView = (ImageView) view.findViewById(R.id.list_item_image_view);
if(holder.itemName.getText() == "SomeName") {
imageView.setImageResource(R.drawable.somedrawable);
}
return view;
}
说实话,我从某种教程中得到了那些,我想我知道那里发生了什么^^ 现在,我如何设法获取单击的项目?我用&#34; setOnClickListener&#34;尝试了几次。但它似乎永远不会起作用。我该如何使用它?我应该用这个吗?我在哪里必须使用它?
答案 0 :(得分:0)
基本思想是listview通常是动态的,因此您将拥有一个您希望向监听器注册的arbatrary数量的项目的集合。除非您单独注册每个项目(不是一个好主意),否则Oclicklistener将无法工作。使用onitemclicklistener注册此链接应该有用的集合。 http://www.ezzylearning.com/tutorial.aspx?tid=1351248&q=handling-android-listview-onitemclick-event
答案 1 :(得分:0)
您将要使用setOnItemClickListener。这是一个如何使用它的例子。您需要根据代码进行调整。但是你可以看到如何引用列表中的单个项目。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, final View view,
int position, long id) {
final String item = (String) parent.getItemAtPosition(position);
view.animate().setDuration(2000).alpha(0)
.withEndAction(new Runnable() {
@Override
public void run() {
list.remove(item);
adapter.notifyDataSetChanged();
view.setAlpha(1);
}
});
}
});
}
我回家后会修复格式。在移动ATM上。如果有人想编辑代码,请随意。
答案 2 :(得分:0)
如果您不想使用适配器,请尝试以下操作:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch(position){
/*
* The case is the list position
*/
case 0:
break;
case 1:
break;
}
}