現在、アンドロイドプロジェクトで作業しています。リストビューのアイテムからアクティビティを起動する必要があります。私は多かれ少なかれ8時間を探して、常に同じ解決策を見つけました。これはうまくいきません。ListViewを構成するクリック可能なアイテム:setOnItemClickListenerは機能しません
public class CtlgArrayAdapter extends ArrayAdapter<String> {
private static final String TAG = "CTLGADAPTER";
private final Activity context;
private final String[] recipeName;
private final String[] recipeDescr;
private final Integer[] recipeDiff;
private final Integer[] recipePic;
private final Integer[] recipeEval;
public CtlgArrayAdapter(Activity context, String[] recipeName, String[] recipeDescr,
Integer[] recipeDiff, Integer[] recipePic, Integer[] recipeEval) {
super(context, R.layout.ctlg_list, recipeName);
this.context = context;
this.recipeName = recipeName;
this.recipeDescr = recipeDescr;
this.recipeDiff = recipeDiff;
this.recipePic = recipePic;
this.recipeEval = recipeEval;
}
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.ctlg_list, null, true);
TextView nameTile = (TextView) rowView.findViewById(R.id.ctlg_list_name);
TextView diffTile = (TextView) rowView.findViewById(R.id.ctlg_list_diff);
TextView descrTile = (TextView) rowView.findViewById(R.id.ctlg_list_descr);
ImageView picTile = (ImageView) rowView.findViewById(R.id.ctlg_list_img);
RatingBar rateTile = (RatingBar) rowView.findViewById(R.id.ctlg_list_rating);
nameTile.setText(recipeName[position]);
diffTile.setText(recipeDiff[position].toString());
descrTile.setText(recipeDescr[position]);
picTile.setImageResource(recipePic[position]);
rateTile.setRating(recipeEval[position]);
return rowView;
}
問題は、私は私の項目をタップすると、何も起こらないということである。CatalogueActivityののonCreateメソッドで
:
CtlgArrayAdapter adapter = new CtlgArrayAdapter(this, recipeName, recipeDescr, recipeDiff,
recipePic, recipeEval);
ListView list = (ListView)findViewById(android.R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "Item clicked");
}
});
CtlgArrayAdapterクラス は、ここに私のコードです。すべてのインターネットは、このソリューションが、それは動作しませんと言っているようだ: '(ここで
は私の.xmlファイルは、以下のとおりです。 カタログのレイアウト:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:id="@android:id/list"
android:clickable="true"
android:layout_alignParentStart="true"
android:layout_below="@id/linear_ctlg"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> </RelativeLayout>
とcatalogue_itemレイアウト
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ctlg_list_img"
android:layout_width="90dp"
android:layout_height="90dp"
android:focusable="false"
android:scaleType="centerCrop"
android:src="@drawable/no_image"
android:layout_marginEnd="10dp"/>
<TextView
android:id="@+id/ctlg_list_name"
android:textColor="@color/colorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toEndOf="@id/ctlg_list_img"
android:focusable="false"
android:textStyle="bold"
android:text="Nom de la recette sur son lit de char"/>
<TextView
android:id="@+id/ctlg_list_diff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/ctlg_list_img"
android:layout_below="@id/ctlg_list_name"
android:text="Difficile"/>
<TextView
android:id="@+id/ctlg_list_descr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ctlg_list_diff"
android:layout_toEndOf="@id/ctlg_list_img"
android:focusable="false"
android:textStyle="italic"
android:text="Ceci est la description de la recette. J'en mets une longue pour être sûr qu'il y ait assez d'espace. Il fait beau aujourd'hui."/>
<RatingBar
android:id="@+id/ctlg_list_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:focusable="false"
android:scaleX="0.4"
android:scaleY="0.4"
android:numStars="5"
android:rating="3"
android:stepSize="1"/> </RelativeLayout>
あなたは私のコードで間違っているものを見つけた場合soooooooがありがとうございました!:)
Mmhは再試行しましたが、感謝しています:) – MySpoon