[英]How to add images to custom listview using Simple Adapter in android
[英]How to add search filter in custom adapter in listview with images?
抱歉,我是 Java 新手,在研究了如何創建列表視圖后,我在MainActivity和自定義適配器中使用了以下代碼。 通過大量研究,我嘗試了很多方法來在 actionbar 中創建 searchView,可能是因為我是 Java 新手並且我對該語言缺乏了解。
主活動代碼
public class MainActivity extends AppCompatActivity {
ListView lv;
Context context;
public static int[] prgmImages = {
R.drawable.ic_f"
};
public static String[] prgmNameList = {
"Bakoena"
};
public static String[] liphoofolo = {
"Ba ana koena."
};
public static String[] phoofolo = {
"Koena ke phoofolo e lulang metsing e phelang ka ho ja nama ea liphoofolo"
};
@SuppressLint("CutPasteId")
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
// Make sure this is before calling super.onCreate
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false);
Objects.requireNonNull(getSupportActionBar()).setHomeAsUpIndicator(R.drawable.ic_menu);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
//custom statusbar for each activity
/*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.RED);
}*/
context = this;
lv = findViewById(R.id.listView);
lv.setAdapter(new CustomAdapter(this, prgmNameList, liphoofolo, phoofolo, prgmImages));
}
}
自定義適配器代碼
public class CustomAdapter extends BaseAdapter{
String [] result;
String [] results;
String [] resultss;
Context context;
int [] imageId;
private static LayoutInflater inflater=null;
public CustomAdapter(MainActivity mainActivity, String[] prgmNameList, String[] liphoofolo, String[] phoofolo, int[] prgmImages) {
// TODO Auto-generated constructor stub
result=prgmNameList;
results=liphoofolo;
resultss=phoofolo;
context=mainActivity;
imageId=prgmImages;
inflater = ( LayoutInflater )context.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return result.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public static class Holder
{
TextView tv;
TextView ts;
TextView tss;
ImageView img;
}
@SuppressLint({"ViewHolder", "InflateParams"})
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Holder holder= new Holder();
View rowView;
rowView = inflater.inflate(R.layout.program_list, null);
holder.tv= rowView.findViewById(R.id.textView1);
holder.ts= rowView.findViewById(R.id.textView2);
holder.tss= rowView.findViewById(R.id.textView3);
holder.img= rowView.findViewById(R.id.imageView1);
holder.tv.setText(result[position]);
holder.ts.setText(results[position]);
holder.tss.setText(resultss[position]);
holder.img.setImageResource(imageId[position]);
return rowView;
}
您需要在 res 文件夾中創建一個名為menu
resource type menu
的新 android 資源目錄(左鍵單擊 res 文件夾 > 新建 > android 資源目錄)。 在菜單標簽內的文件中創建名為menu_bar
菜單資源文件(再次menu_bar
擊菜單文件夾>新建>菜單資源文件)添加下降代碼:
<item
android:id="@+id/app_bar_search"
android:icon="@drawable/ic_search_black_24dp"
android:title="Search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always" />
然后在主要活動中添加:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_bar, menu);
MenuItem item = menu.findItem(R.id.app_bar_search);
SearchView searchView = (SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.