1
getView()
メソッドをArrayAdapter
にオーバーロードしました。 getView()
を上書きするときにチェックボックスの機能を維持する方法があるかどうか疑問に思っていましたか?ArrayAdapterでgetViewをオーバーライドしても、チェックボックスを維持しますか?
私の現在の実装では、イメージと各行のテキストのみが表示されます。上書きする前にチェックボックスが表示されなくなりました。
以下私のコードです:
public class ShortcutsArrayAdapter extends ArrayAdapter<ResolveInfo> {
private final Activity context;
private final List<ResolveInfo> objects;
private PackageManager pm = null;
public ShortcutsArrayAdapter(Activity context, int textViewResourceId,
List<ResolveInfo> objects, PackageManager pm) {
super(context, textViewResourceId, objects);
this.context = context;
this.objects = objects;
this.pm = pm;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflator = context.getLayoutInflater();
View rowView = inflator.inflate(R.layout.rowlayout, null, true);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText(objects.get(position).loadLabel(pm));
try {
imageView.setImageBitmap(((BitmapDrawable) pm.getApplicationIcon(objects.get(position).activityInfo.applicationInfo.packageName)).getBitmap());
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rowView;
}
}
そして、ここでは、私は、アダプタを作成しています方法です。ここで
appList = getApplicationList();
setListAdapter(new ShortcutsArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, appList, pm));
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
は、行レイアウトxmlです:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="40dp"
android:layout_height="40dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/label"
android:text="@+id/label"/>
</LinearLayout>
「super.getView(position、convertView、parent);」をメソッドに追加するとき。これは、実行時にlogcatから取得するエラーです。 '02-14 15:44:48.924:E/AndroidRuntime(26397):java.lang.IllegalStateException:ArrayAdapterはリソースIDがTextViewであることを要求します。私はそれをいくつかのランダムな 'TextView'に変更しましたが、それでも動作しませんでした。それは '無効な資源'だ。 – prolink007
@ prolink007あなたのrow_layout.xmlのチェックボックスはどこですか? – Sid
OoooooooooopSSSSS!私のXMLにチェックボックスを入れることを忘れてしまった。より多くの目が良い。ありがとうございました。 – prolink007