Tôi đang cố gắng thiết lập onItemClickListener với một bộ điều hợp tùy chỉnh và thiết lập listview. Có vẻ như không thể khiến người nghe làm việc. Tôi không nghĩ rằng tôi đang thiết lập nó đúng cách. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn rất nhiều.onItemClickListener với bộ điều hợp tùy chỉnh và danh sách xem
Adaptor:
public class ModuleAdapter extends ArrayAdapter<Module> {
Context context;
int layoutResourceId;
Module data[];
public ModuleAdapter(Context context, int layoutResourceId,
Module data[]) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ModuleHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ModuleHolder();
holder.modJapTitle = (TextView)row.findViewById(R.id.moduleJapTitle);
holder.modEngTitle = (TextView)row.findViewById(R.id.moduleEngTitle);
holder.modComp = (TextView)row.findViewById(R.id.moduleCompletion);
holder.modRating = (RatingBar)row.findViewById(R.id.moduleScore);
row.setTag(holder);
}
else
{
holder = (ModuleHolder)row.getTag();
}
Module module = data[position];
holder.modJapTitle.setText(module.moduleJapaneseTitle);
holder.modEngTitle.setText(module.moduleEnglishTitle);
holder.modComp.setText(module.moduleCompletionRate);
holder.modRating.setRating(module.moduleRating);
return row;
}
static class ModuleHolder
{
TextView modEngTitle;
TextView modJapTitle;
TextView modComp;
RatingBar modRating;
}
}
Thực hiện:
ModuleAdapter moduleData = new ModuleAdapter(this, R.layout.module_box_item, module_data);
ListView listView1 = (ListView)findViewById(R.id.moduleListContainer);
listView1.setAdapter(moduleData);
listView1.setCacheColorHint(Color.TRANSPARENT);
listView1.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.v("Module Item Trigger", "Module item was triggered");
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
}
});
Ngoài ra ở đây là Layout XML cho một trong những mặt hàng duy nhất trong danh sách:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/moduleBox"
android:id="@+id/moduleBoxSingle" >
<TextView
android:id="@+id/moduleJapTitle"
style="@style/moduleTitleJap" />
<TextView
android:id="@+id/moduleCompletion"
android:layout_above="@+id/moduleSepartor"
style="@style/moduleCompletion" />
<View
android:id="@+id/moduleSepartor"
android:layout_below="@+id/moduleJapTitle"
style="@style/moduleSeperator" />
<TextView
android:id="@+id/moduleEngTitle"
android:layout_below="@+id/moduleSepartor"
style="@style/moduleTitleEng" />
<RatingBar
android:id="@+id/moduleScore"
android:layout_below="@+id/moduleSepartor"
style="@style/moduleRating"
android:layout_alignParentRight="true" />
</RelativeLayout>
Tất cả mọi thứ dường như nhìn tốt. Có lẽ đó là một vấn đề giao diện người dùng? Tại sao bạn không viết để logcat thay vì popping lên một Toast. Chỉ cần chắc chắn 100% người nghe của bạn không được gọi. –
bạn có thể đăng bố cục xml của mình tại đây không. – rajpara
Xin chào, cảm ơn bạn đã trả lời. Tôi đã thêm vào dòng để ghi vào Logcat. Và tôi cũng đã thêm vào trong bố cục XML được sử dụng cho từng mục danh sách duy nhất. – mwrazam