私はアプリケーションを開発しています。textview と image を持つリストビューが必要です。私はそれを次のようにしました:
XML のリスト ビュー:
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/tablelayout1"
android:layout_below="@+id/edittext_searchbar"
android:layout_margin="15dip"
android:listSelector="@drawable/list_selector"
android:divider="#623b42"
android:dividerHeight="0.5dip"
android:cacheColorHint="#00000000"
android:overScrollMode="never" >
</ListView>
XML のリスト ビューのアダプターは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_selector" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="*"
tools:ignore="UselessParent" >
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent" >
<TextView
android:id="@+id/textview"
android:layout_width="0sp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:paddingLeft="5sp"
android:textColor="@color/color_black"
android:textSize="18sp"
tools:ignore="SelectableText" />
<ImageView
android:id="@+id/imageview"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/string_todo"
android:paddingRight="5sp" />
</TableRow>
</TableLayout>
</RelativeLayout>
アダプターの .java は次のとおりです。
public class CustomListAdapter extends ArrayAdapter<String> {
/** Global declaration of variables. As there scope lies in whole class. */
private Context context;
private String[] Listofdata;
ImageClass icon[] = null;
/** Constructor Class */
public CustomListAdapter (Context context,String[] mainList, ImageClass[] MenuIcon) {
super(context,R.layout.mainmenu_screen_adapter_layout,mainList);
this.context = context;
this.Listofdata= mainList;
this.icon = MenuIcon;
}
/** Implement getView method for customizing row of list view. */
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
// Creating a view of row.
View rowView = inflater.inflate(R.layout.mainmenu_screen_adapter_layout, parent, false);
TextView textView = (TextView)rowView.findViewById(R.id.textview);
ImageView imageView = (ImageView)rowView.findViewById(R.id.imageview);
textView.setText(menuListofAdapter[position]);
ImageClass MenuIcon = icon[position];
imageView.setImageResource(MenuIcon .icon);
return rowView;
}
}
main.java では、次のようにコードを実行しました。
画像の場合、画像配列を次のように作成しました:
ImageClass MenuIcon[] = new ImageClass []{
new ImageClass (R.drawable.veg),
new ImageClass (R.drawable.non_veg),
new ImageClass (R.drawable.liquor),
new ImageClass (R.drawable.desert),
new ImageClass (R.drawable.beverages)
};
カスタム アダプタの呼び出しは次のとおりです。
CustomListAdapter adapter = new CustomListAdapter (this,mainList,MenuIcon);
listView.setAdapter(adapter);
今、リストビューでの検索を次のように適用しています:
edittextSearch.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s){
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s,int start, int count, int after){
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,int start, int before, int count){
searchedData.clear();
for (int i = 0, j = 0; i < mainMenuList.length; i++) {
if (((String)mainList[i].toLowerCase(Locale.getDefault())).contains(edittextSearch.getText().toString().toLowerCase())) {
searchedData.add(mainMenuList[i].toString());
}
}
menuSearchList = searchedData.toArray(new String[searchedData.size()]);
CustomListAdapter adapter = new CustomListAdapter (main.this,menuSearchList,MenuIcon);
listView.setAdapter(adapter);
}
しかし、問題は次のとおりです。
データを検索すると、検索は適切に行われますが、検索されたアイテムの画像を取得するためのロジックを適用する方法がわからないため、対応する画像は検索されません。
だから私はそれのために何をすべきか私に提案してください。