Android ListView侦听器不使用自定义阵列适配器

Android ListView侦听器不使用自定义阵列适配器,android,listview,Android,Listview,您好,我一直在开发android应用程序,该应用程序需要使用不同类型的列表视图项。为此,我实现了自定义数组适配器以一次性处理多个自定义列表项,下面是我的代码片段:自定义数组适配器 public class QuestionsCustomAdapter extends ArrayAdapter { public static final int ImageQuestion=0; public static final int TextQuesiton=1; public static final

您好,我一直在开发android应用程序,该应用程序需要使用不同类型的列表视图项。为此,我实现了自定义数组适配器以一次性处理多个自定义列表项,下面是我的代码片段:
自定义数组适配器

public class QuestionsCustomAdapter extends ArrayAdapter {
public static final int ImageQuestion=0;
public static final int TextQuesiton=1;
public static final int VideoQuestion=2;


private List<ListViewItem> questions;
private LayoutInflater mInflater;

public QuestionsCustomAdapter(Activity activity,int res,List<ListViewItem> questions){
    super(activity,res,questions);
    mInflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.questions=questions;
}
@Override
public int getCount() {
    return questions.size();
}

@Override
public Object getItem(int position) {
    return questions.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

public Integer getItemViewType1(int position){
    return questions.get(position).getType();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    CustomViewHolder viewHolder=null;

    int listViewItemType=getItemViewType1(position);

        if(listViewItemType==ImageQuestion){
            convertView=mInflater.inflate(R.layout.card_view_image,null);
            ListViewItem listViewItem=questions.get(position);
            ((TextView)convertView.findViewById(R.id.imageAnswer2)).setText(listViewItem.getAnswer1());
            ((TextView)convertView.findViewById(R.id.imageAnswer3)).setText(listViewItem.getAnswer2());
            ((TextView)convertView.findViewById(R.id.imageAnswer4)).setText(listViewItem.getAnswer3());
            ((TextView)convertView.findViewById(R.id.imageAnswer5)).setText(listViewItem.getAnswer4());
            ((TextView)convertView.findViewById(R.id.imageQuestionText)).setText(listViewItem.getQuestion());
            Bitmap bitmap= BitmapFactory.decodeFile(listViewItem.getImageAndVideoView());
            ((ImageView)convertView.findViewById(R.id.cardImage)).setImageBitmap(bitmap);
            ((ImageView)convertView.findViewById(R.id.cardImage)).setScaleType(ImageView.ScaleType.FIT_XY);
            ((TextView)convertView.findViewById(R.id.rightImageAnswer)).setText("Right answer: "+listViewItem.getRightAnswer());
        }else if(listViewItemType==TextQuesiton){
            convertView=mInflater.inflate(R.layout.card_view,null);
            ListViewItem listViewItem1=questions.get(position);
            ((TextView)convertView.findViewById(R.id.answer2)).setText(listViewItem1.getAnswer1());
            ((TextView)convertView.findViewById(R.id.answer3)).setText(listViewItem1.getAnswer2());
            ((TextView)convertView.findViewById(R.id.answer4)).setText(listViewItem1.getAnswer3());
            ((TextView)convertView.findViewById(R.id.answer5)).setText(listViewItem1.getAnswer4());
            ((TextView)convertView.findViewById(R.id.questionText)).setText(listViewItem1.getQuestion());
            ((TextView)convertView.findViewById(R.id.rightAnswer)).setText("Right answer:"+listViewItem1.getRightAnswer());
        }else if(listViewItemType==VideoQuestion){
            convertView=mInflater.inflate(R.layout.card_view_video,null);
            ListViewItem listViewItem2=questions.get(position);
            ((TextView)convertView.findViewById(R.id.videoAnswer2)).setText(listViewItem2.getAnswer1());
            ((TextView)convertView.findViewById(R.id.videoAnswer3)).setText(listViewItem2.getAnswer2());
            ((TextView)convertView.findViewById(R.id.videoAnswer4)).setText(listViewItem2.getAnswer3());
            ((TextView)convertView.findViewById(R.id.videoAnswer5)).setText(listViewItem2.getAnswer4());
            ((TextView)convertView.findViewById(R.id.videoQuestionText)).setText(listViewItem2.getQuestion());
            ((VideoView)convertView.findViewById(R.id.cardViewVideo)).setVideoURI(Uri.parse(listViewItem2.getImageAndVideoView()));
            ((VideoView)convertView.findViewById(R.id.cardViewVideo)).seekTo(100);
            ((TextView)convertView.findViewById(R.id.rightVideoAnswer)).setText("Right Answer: "+listViewItem2.getRightAnswer());
        }

    return convertView;
}
public class QuestionsCustomAdapter扩展了ArrayAdapter{
公共静态最终int ImageQuestion=0;
公共静态final int TextQuesiton=1;
公共静态最终int视频问题=2;
私人名单问题;
私人停车场;
公共问题适应(活动、智力、问题列表){
超级(活动、res、问题);
mInflater=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
这个。问题=问题;
}
@凌驾
public int getCount(){
返回问题。size();
}
@凌驾
公共对象getItem(int位置){
返回问题。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
公共整数getItemViewType1(int位置){
返回问题。get(position.getType();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
CustomViewHolder-viewHolder=null;
int listViewItemType=getItemViewType1(位置);
if(listViewItemType==ImageQuestion){
convertView=mInflater.inflate(R.layout.card\u view\u image,空);
ListViewItem ListViewItem=问题。获取(位置);
((TextView)convertView.findViewById(R.id.imageAnswer2)).setText(listViewItem.getAnswer1());
((TextView)convertView.findViewById(R.id.imageAnswer3)).setText(listViewItem.getAnswer2());
((TextView)convertView.findViewById(R.id.imageAnswer4)).setText(listViewItem.getAnswer3());
((TextView)convertView.findViewById(R.id.imageAnswer5)).setText(listViewItem.getAnswer4());
((TextView)convertView.findViewById(R.id.imageQuestionText)).setText(listViewItem.getQuestion());
位图位图=位图工厂.decodeFile(listViewItem.getImageAndVideoView());
((ImageView)convertView.findViewById(R.id.cardImage)).setImageBitmap(位图);
((ImageView)convertView.findViewById(R.id.cardImage)).setScaleType(ImageView.ScaleType.FIT_XY);
((TextView)convertView.findViewById(R.id.rightImageAnswer)).setText(“正确答案:+listViewItem.getRightAnswer());
}else if(listViewItemType==TextQuesiton){
convertView=mInflater.充气(R.layout.card_视图,空);
ListViewItem listViewItem1=问题。获取(位置);
((TextView)convertView.findViewById(R.id.answer2)).setText(listViewItem1.getAnswer1());
((TextView)convertView.findViewById(R.id.answer3)).setText(listViewItem1.getAnswer2());
((TextView)convertView.findViewById(R.id.answer4)).setText(listViewItem1.getAnswer3());
((TextView)convertView.findViewById(R.id.answer5)).setText(listViewItem1.getAnswer4());
((TextView)convertView.findViewById(R.id.questionText)).setText(listViewItem1.getQuestion());
((TextView)convertView.findViewById(R.id.rightAnswer)).setText(“正确答案:+listViewItem1.getRightAnswer());
}else if(listViewItemType==VideoQuestion){
convertView=mInflater.充气(R.layout.card\u view\u video,空);
ListViewItem listViewItem2=问题。获取(位置);
((TextView)convertView.findViewById(R.id.videoAnswer2)).setText(listViewItem2.getAnswer1());
((TextView)convertView.findViewById(R.id.videoAnswer3)).setText(listViewItem2.getAnswer2());
((TextView)convertView.findViewById(R.id.videoAnswer4)).setText(listViewItem2.getAnswer3());
((TextView)convertView.findViewById(R.id.videoAnswer5)).setText(listViewItem2.getAnswer4());
((TextView)convertView.findViewById(R.id.videoQuestionText)).setText(listViewItem2.getQuestion());
((VideoView)convertView.findViewById(R.id.cardwiewvideo)).setVideoURI(Uri.parse(listViewItem2.getImageAndVideoView());
((VideoView)convertView.findViewById(R.id.cardwiewvideo)).seekTo(100);
((TextView)convertView.findViewById(R.id.rightVideoAnswer)).setText(“正确答案:+listViewItem2.getRightAnswer());
}
返回视图;
}
}
下面是我的ListView侦听器:

 listView=(ListView)findViewById(R.id.listView);
 customAdapter=new QuestionsCustomAdapter(this,0,questions1);
 listView.setAdapter(customAdapter);

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Bundle position=new Bundle();
            ListViewItem itemValue=(ListViewItem) listView.getItemAtPosition(i);
            Integer questionType=itemValue.getType();


            String[] questionArray={itemValue.getQuestion(),itemValue.getAnswer1(),itemValue.getAnswer2(),itemValue.getAnswer3(),
            itemValue.getAnswer4(),itemValue.getRightAnswer(), String.valueOf(i)};
            position.putStringArray("question",questionArray);
            position.putString("type","edit");
            position.putString("questionType",String.valueOf(itemValue.getType()));
            if(itemValue.getType()==0){
                position.putString("image",itemValue.getImageAndVideoView());
            }else if(itemValue.getType()==2){
               position.putString("video",itemValue.getVideoView());
            }
            DialogFragment editQuestionFragment=EditQuestionFragment.newInstance();

            editQuestionFragment.setArguments(position);
            editQuestionFragment.show(getFragmentManager(),"dialog");
        }
    });
listView=(listView)findViewById(R.id.listView);
customAdapter=新问题customAdapter(此,0,问题1);
setAdapter(customAdapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
捆绑位置=新捆绑();
ListViewItemValue=(ListViewItem)listView.getItemAtPosition(i);
整数questionType=itemValue.getType();
String[]questionArray={itemValue.getQuestion(),itemValue.getAnswer1(),itemValue.getAnswer2(),itemValue.getAnswer3(),
itemValue.getAnswer4(),itemValue.getRightAnswer(),String.valueOf(i)};
position.putStringArray(“问题”,questionArray);
position.putString(“类型”、“编辑”);
position.putString(“questionType”,String.valueOf(itemValue.getType());
if(itemValue.getType()==0){
position.putString(“image”,itemValue.getImageAndVideoView());
}else if(itemValue.getType()==2){
position.putString(“video”,itemValue.getVideoView());
}
DialogFragment-editQuestionFragment=editQuestionFragment.newInstance();
editQuestionFragment.setArguments(位置);
显示(getFragmentManager(),“对话框”);
}
});

此侦听器使用卡片视图\u图像卡片视图卡片视图\u视频项不响应侦听器。

然后调试此项值。getType()返回的内容?没有什么我忘记提到的