Android使用开关按位置更改列表视图中的图像和文本

Android使用开关按位置更改列表视图中的图像和文本,android,android-listview,switch-statement,baseadapter,Android,Android Listview,Switch Statement,Baseadapter,我在工作。我成功地在列表视图中调整了图像和文本。我有3个图像和文本。现在我想更改列表视图中的图像和文本背景,按位置单击 这是我的基本适配器代码 public class SlideMenuAdapter extends BaseAdapter { private Context mContext; private final String[] menu_items_id; private final int[] Imageid; TextView textView; ImageView ima

我在工作。我成功地在列表视图中调整了图像和文本。我有3个图像和文本。现在我想更改列表视图中的图像和文本背景,按位置单击 这是我的基本适配器代码

public class SlideMenuAdapter extends BaseAdapter {
private Context mContext;
private final String[] menu_items_id;

private final int[] Imageid;
TextView textView;
ImageView imageView;

private static LayoutInflater inflater = null;

public SlideMenuAdapter(Context context, String[] names, int[] Imageid)
         {
    mContext = context;

    this.Imageid = Imageid;
    this.menu_items_id = names;
    inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getCount() {

    return Imageid.length;
}

@Override
public Object getItem(int position) {

    return null;
}

@Override
public long getItemId(int position) {

    return 0;
}

@SuppressLint("ViewHolder")
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View grid;

    grid = new View(mContext);
    grid = inflater.inflate(R.layout.azercell_slidemenu_adaper, null);
    textView = (TextView) grid.findViewById(R.id.desc);
    imageView = (ImageView) grid.findViewById(R.id.photo);

    textView.setText(menu_items_id[position]);

    textView.setTypeface(MainmoviesActivity.dejavusans);





    imageView.setImageResource(Imageid[position]);
    return grid;
}
} 这是一个主要的java代码

int[] menu_images = { R.drawable.menu_schedule, R.drawable.menu_about,
        R.drawable.menu_booking };

int[] menu_imagesover = { R.drawable.schedule_ove, R.drawable.about_over,
        R.drawable.booking_over };
private String[] menu_namesEng = { "schedule_ove", "about_over", "about_over" };






    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            TextView textView1 = (TextView) parent.findViewById(R.id.desc);

            ImageView imageView=(ImageView)parent.findViewById(R.id.photo);
            switch (position) {
            case 0:
                textView1.setTextColor(Color.parseColor("#8f332a"));
                imageView.setImageResource(menu_imagesover[position]);
                break;

            case 1:
                textView1.setTextColor(Color.parseColor("#ffffff"));
                imageView.setImageResource(menu_imagesover[position]);
                break;

            default:
                break;
            }


        }

    });

我可以更改仅图像和文本列表视图的第一个项目,当我单击第二个项目时,第一个项目的图像和文本再次更改。我做错了什么?如果有人知道解决方案,请帮助我。

使用视图而不是父视图,例如:

TextView textView1 = (TextView) view.findViewById(R.id.desc);
ImageView imageView = (ImageView) view.findViewById(R.id.photo);
因为使用父项,findViewById将遍历viewtree并返回第一个匹配项,它始终是列表中的第一项

我还可以建议使用RecyclerView吗

使用视图支架可获得更好的性能。