【发布时间】:2018-04-13 09:40:11
【问题描述】:
我有一个场景,我在 ListView 中显示选项。但是,对于一种特殊情况,我需要 only ListView 的最后一项是可点击的。有什么办法可以实现吗?
适配器代码:
public class OptionAdapter extends ArrayAdapter<OptionsPojo> {
private int mColorResourceId;
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
OptionsPojo optionsPojo = getItem(position);
View listItemView = convertView;
if (listItemView == null){
listItemView = LayoutInflater.from(getContext()).inflate(R.layout.option_card, parent,false);
}
View textImgContainer = listItemView.findViewById(R.id.ll_img_text);
View textContainer = listItemView.findViewById(R.id.rl_text);
ImageView icon = listItemView.findViewById(R.id.image_view);
TextView imgOptnText = listItemView.findViewById(R.id.option_text_view);
TextView optionText = listItemView.findViewById(R.id.tv_text);
int color = getContext().getResources().getColor(mColorResourceId);
if(optionsPojo.hasImage())
{
icon.setImageResource(optionsPojo.getmImageResourceId());
textImgContainer.setBackgroundColor(color);
icon.setVisibility(View.VISIBLE);
//setting option with image
if (optionsPojo.getOption().startsWith("<p>"))
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
imgOptnText.setText(Html.fromHtml(optionsPojo.getOption(), Html.FROM_HTML_MODE_COMPACT));
else
imgOptnText.setText(Html.fromHtml(optionsPojo.getOption()));
}else
imgOptnText.setText(optionsPojo.getOption());
}else{
textImgContainer.setVisibility(View.GONE);
textContainer.setVisibility(View.VISIBLE);
textContainer.setBackgroundColor(color);
//setting option without image
if (optionsPojo.getOption().startsWith("<p>"))
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
optionText.setText(Html.fromHtml(optionsPojo.getOption(), Html.FROM_HTML_MODE_COMPACT));
else
optionText.setText(Html.fromHtml(optionsPojo.getOption()));
}else
optionText.setText(optionsPojo.getOption());
}
return listItemView;
}
public OptionAdapter(@NonNull Context context, @NonNull ArrayList<OptionsPojo> options, int colorResourceId) {
super(context,0, options);
mColorResourceId = colorResourceId;
}
正在使用列表视图的活动代码:
OptionAdapter Adapter = new OptionAdapter(this, optionList, R.color.background);
listview.setAdapter(Adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
showDialog(ChosenTestQuestion.this,optionList.get(i).getAnswer());
}
});
}
【问题讨论】:
-
是的,当然有办法实现它。请分享您的
ListView的适配器。 -
为整个listView创建一个点击事件,并在事件代码中检查当前被点击的项目是否是列表的最后一个。如果是,做你想做的事,否则什么都不做
标签: android listview events onitemclicklistener selected