Android 是否有任何方法可以使特定项目在列表视图中可单击?

Android 是否有任何方法可以使特定项目在列表视图中可单击?,android,listview,events,onitemclicklistener,selected,Android,Listview,Events,Onitemclicklistener,Selected,我有一个场景,我在列表视图中显示选项。但是,对于特殊情况,我只需要单击列表视图的最后一项。我有没有办法做到这一点 适配器代码: public class OptionAdapter extends ArrayAdapter<OptionsPojo> { private int mColorResourceId; @Override public View getView(int position, @Nullable View convertView

我有一个场景,我在列表视图中显示选项。但是,对于特殊情况,我只需要单击列表视图的最后一项。我有没有办法做到这一点

适配器代码:

    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扩展了ArrayAdapter{
私有int mColorResourceId;
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级){
OptionsPojo OptionsPojo=getItem(位置);
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).flate(R.layout.option\u卡,父项,false);
}
View textImgContainer=listItemView.findViewById(R.id.ll\u img\u text);
View textContainer=listItemView.findViewById(R.id.rl_text);
ImageView图标=listItemView.findViewById(R.id.image\u视图);
TextView imgOptnText=listItemView.findViewById(R.id.option\u text\u view);
TextView optionText=listItemView.findViewById(R.id.tv_text);
int color=getContext().getResources().getColor(mColorResourceId);
if(optionsPojo.hasImage())
{
icon.setImageResource(optionsPojo.getmImageResourceId());
textImgContainer.setBackgroundColor(颜色);
icon.setVisibility(View.VISIBLE);
//带图像的设置选项
if(optionsPojo.getOption().startsWith(“”)
{
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.N)
imgOptnText.setText(Html.fromHtml(optionsPojo.getOption(),Html.FROM_Html_MODE_COMPACT));
其他的
imgOptnText.setText(Html.fromHtml(optionsPojo.getOption());
}否则
imgOptnText.setText(optionsPojo.getOption());
}否则{
textImgContainer.setVisibility(View.GONE);
textContainer.setVisibility(View.VISIBLE);
textContainer.setBackgroundColor(颜色);
//不带图像的设置选项
if(optionsPojo.getOption().startsWith(“”)
{
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.N)
optionText.setText(Html.fromHtml(optionsPojo.getOption(),Html.FROM_Html_MODE_COMPACT));
其他的
optionText.setText(Html.fromHtml(optionsPojo.getOption());
}否则
optionText.setText(optionsPojo.getOption());
}
返回listItemView;
}
公共选项适配器(@NonNull上下文、@NonNull数组列表选项、int-colorResourceId){
超级(上下文,0,选项);
mColorResourceId=colorResourceId;
}
正在使用listview的活动代码:

      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());
            }
        });
    }
OptionAdapter Adapter=新的OptionAdapter(这个,optionList,R.color.background);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
showDialog(ChosenTestQuestion.this,optionList.get(i.getAnswer());
}
});
}

请检查此代码

listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int i, long id) {
                if(i == (list.size()-1)){
                    showDialog(ChosenTestQuestion.this,optionList.get(i).getAnswer()); 
                }
            }
        });
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父项、视图、int i、long id){
if(i==(list.size()-1)){
showDialog(ChosenTestQuestion.this,optionList.get(i.getAnswer());
}
}
});

在MClick方法中有位置变量。您只需检查这是否是最后一个元素

是的,当然有办法做到这一点。请共享您的
列表视图的适配器。为整个列表视图创建一个单击事件,并在事件代码内检查当前单击的选定项目是否是列表中的最后一个项目。如果是,做你想做的,否则什么都不要做谢谢你的回答和友善,这很有效