我有一个带有 3 个文本视图和 5 个图像视图(星号)的自定义列表视图。前两个文本视图是可见的,第三个是不可见的。我正在从服务器获取数据并放入列表视图中,无论多少。
我想要的是
如果我点击任何星星(1 或 2 或 3 或 4 或 5),我想从隐藏的 textview 中获取 id。和star imageview 在点击它后会改变他们的图像。假设我点击第三颗星,那么 3 星将被评分,其他星将不评分。
我做了什么
现在我能够从服务器获取数据并将其放入列表视图中,但假设我单击任何项目的星标,然后最后一个项目的星标会更改其图像而不是单击的项目。它从隐藏的文本视图中获取最后一个 ID。
这是我的代码。
public class MyArrayAdapter extends ArrayAdapter<Student> {
StudentWrapper StudentWrapper = null;
Context context;
int layoutResourceId;
Student student;
ArrayList<Student> students = new ArrayList<Student>();
public MyArrayAdapter(Context context, int layoutResourceId,ArrayList<Student> studs) {
super(context, layoutResourceId, studs);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.students = studs;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View item = convertView;
if (item == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
item = inflater.inflate(layoutResourceId, parent, false);
StudentWrapper = new StudentWrapper();
StudentWrapper.menuname = (TextView) item.findViewById(R.id.title);
StudentWrapper.hotelname = (TextView) item.findViewById(R.id.artist);
StudentWrapper.menuid = (TextView) item.findViewById(R.id.tvhotelid);
StudentWrapper.firstStar = (ImageView)item.findViewById(R.id.hotelListFirstStar);
StudentWrapper.secondStar = (ImageView)item.findViewById(R.id.hotelListSecondStar);
StudentWrapper.thirdStar = (ImageView)item.findViewById(R.id.hotelListThirdStar);
StudentWrapper.fourthStar = (ImageView)item.findViewById(R.id.hotelListFourthStar);
StudentWrapper.fifthStar = (ImageView)item.findViewById(R.id.hotelListFifthStar);
StudentWrapper.firstStar.setFocusable(false);
StudentWrapper.secondStar.setFocusable(false);
StudentWrapper.thirdStar.setFocusable(false);
StudentWrapper.fourthStar.setFocusable(false);
StudentWrapper.fifthStar.setFocusable(false);
item.setTag(StudentWrapper);
} else {
StudentWrapper = (StudentWrapper) item.getTag();
}
student = students.get(position);
StudentWrapper.menuname.setText(student.getMenuName());
StudentWrapper.hotelname.setText(student.gethotenName());
StudentWrapper.menuid.setText(String.valueOf(student.getMenuId()));
StudentWrapper.fifthStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Edit", Toast.LENGTH_LONG).show();
StudentWrapper.firstStar.setImageResource(R.drawable.rated);
StudentWrapper.secondStar.setImageResource(R.drawable.rated);
StudentWrapper.thirdStar.setImageResource(R.drawable.rated);
StudentWrapper.fourthStar.setImageResource(R.drawable.rated);
StudentWrapper.fifthStar.setImageResource(R.drawable.rated);
}
});
StudentWrapper.secondStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentWrapper.firstStar.setImageResource(R.drawable.rated);
StudentWrapper.secondStar.setImageResource(R.drawable.rated);
StudentWrapper.thirdStar.setImageResource(R.drawable.unrated);
StudentWrapper.fourthStar.setImageResource(R.drawable.unrated);
StudentWrapper.fifthStar.setImageResource(R.drawable.unrated);
Toast.makeText(context, "Delete"+student.getMenuId(), Toast.LENGTH_LONG).show();
}
});
StudentWrapper.firstStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentWrapper.firstStar.setImageResource(R.drawable.rated);
StudentWrapper.secondStar.setImageResource(R.drawable.unrated);
StudentWrapper.thirdStar.setImageResource(R.drawable.unrated);
StudentWrapper.fourthStar.setImageResource(R.drawable.unrated);
StudentWrapper.fifthStar.setImageResource(R.drawable.unrated);
Toast.makeText(context, "Delete"+student.getMenuId(), Toast.LENGTH_LONG).show();
}
});
StudentWrapper.fourthStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentWrapper.firstStar.setImageResource(R.drawable.rated);
StudentWrapper.secondStar.setImageResource(R.drawable.rated);
StudentWrapper.thirdStar.setImageResource(R.drawable.rated);
StudentWrapper.fourthStar.setImageResource(R.drawable.rated);
StudentWrapper.fifthStar.setImageResource(R.drawable.unrated);
Toast.makeText(context, "Delete"+student.getMenuId(), Toast.LENGTH_LONG).show();
}
});
StudentWrapper.thirdStar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StudentWrapper.firstStar.setImageResource(R.drawable.rated);
StudentWrapper.secondStar.setImageResource(R.drawable.rated);
StudentWrapper.thirdStar.setImageResource(R.drawable.rated);
StudentWrapper.fourthStar.setImageResource(R.drawable.unrated);
StudentWrapper.fifthStar.setImageResource(R.drawable.unrated);
Toast.makeText(context, "Delete"+student.getMenuId(), Toast.LENGTH_LONG).show();
}
});
return item;
}
static class StudentWrapper {
TextView menuid;
TextView menuname;
TextView hotelname;
ImageView firstStar;
ImageView secondStar;
ImageView thirdStar;
ImageView fourthStar;
ImageView fifthStar;
}
}
如果我单击任何项目的任何星,那么它会反映最后一个项目。我想更改该项目的图像视图并希望从该项目的文本视图中获取文本。
请给我任何提示或参考