我有一个项目要管理,如果足球自由职业者获得了一个技巧,如TVShowTime应用程序,但有技巧。我有Listview的自定义适配器和四个字符串数组,我不知道如何保存每个技巧的复选框状态。
复选框状态是在CustomAdapter0中配置的。
我遇到的其他问题是复选框需要按两次才能更改,按两次后它可以正常工作。我不知道如何解决这个问题。
CustomAdapter
public class CustomAdapter0 extends BaseAdapter {
public CustomAdapter0(String[] tricks, Context context) {
this.tricks = tricks;
this.context = context;
}
private String[] tricks;
private Context context;
private boolean isClicked;
private LayoutInflater layoutInflater;
@Override
public int getCount() {
return tricks.length;
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View row = convertView;
if(convertView == null){
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.custom_listview_tricks, null);
}
TextView textView = row.findViewById(R.id.name_xml);
final ImageButton imageButton = row.findViewById(R.id.unmastered_xml);
textView.setText(tricks[i]);
imageButton.setBackgroundResource(R.drawable.unmastered);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isClicked) {
imageButton.setBackgroundResource(R.drawable.mastered);
} else {
imageButton.setBackgroundResource(R.drawable.unmastered);
}
isClicked = !isClicked;
}
});
return row;
}
}
TricksActivity
public class TricksActivity extends AppCompatActivity {
private String[] lower = {
"ATW - Around the World",
"HTW - Hop the World",
"Crossover",
"Crossover 360",
"Simple Crossover",
"Reverse Crossover",
"KATW - Knee Around the World",
"KHTW - Knee Hop the World",
"Toe Bounce",
"Reverse Toe Bounce",
"Air Jester",
"ATL - Around the Leg",
"Hell Juggles",
"AATW - Abbas Around the World",
"HATW - Half Around the World",
"TATW - Touzani Around the World",
"MATW - Mitchy Around the World",
"ATATW - AlternateTouzani Around the World",
"AMATW - Alternate Mitchy Around the World",
"HMATW - Homie Mitchy Around the World",
"HTATW - Homie Touzani Around the World",
"KAATW - Knee Abbas Around the World",
"KMATW - Knee Mitchy Around the World",
"KTATW - Knee Touzani Around the World",
"LEBATW - Lebioda Around the World",
"LATW - Lemmens Around the World",
"MAATW - Mitchy Abbas Around the World",
"RATW - Ratinho Around the World",
"ATL - Around the Leg",
"360 ATW",
"Clipper",
"JATOW - Joshua Around the Oppositive World",
"Sagami Aroudn the World",
"YATW - Yosuke Around the World",
"Timo ATW",
"Knee Timo ATW",
"Air Jester",
"Eclipse",
"Half New Shit",
"ALATW - Alternate Lemmens Around the World",
"BATW - Beck Around the World",
"HJATW - Homie Jay Around the World",
"HMAATW - Homie Mitchy Abbas Around the World",
"HTAATW - Homie Touzani Abbas Around the World",
"KAMATW - Knee Alternate Mitchy Around the World",
"KATATW - Knee Alternate Touzani Around the World",
"KMAATW - Knee Mitchy Alternate Around the World",
"LAATW - Lemmens Abbas Around the World",
"LMATW - Lemmens Mitchy Around the World",
"LTATW - Lemmens Touzani Around the World",
"Magellan",
"New Shit",
"Palle Trick",
"Reverse Palle Trick",
"Toe Stall",
"Hell Stall",
"Knee Stall",
"Hell Juggles",
"Spin Magic",
"MichRyc Move",
"AHMATW - Alternate Homie Mitchy Around the World",
"AHTATW - Alternate Homie Touzani Around the World",
"ALMATW - Alternate Lemmens Mitchy Around the World",
"KLAATW - Knee Lemmens Abbas Around the World",
"SATW - Skora Around the World",
"Skora Move",
"RSATW - Reverse Skora Around the World",
" HTLATW - Homie Touzani Lemmens Around the World",
"SZATW - Szymo Around The World",
"EATW - Eldo Around the World",
"SKATW - Skala Around the World",
"ZATW - Zegan Around the World",
"K3EATW - K3vin Eldo Around the World",
"SKMATW - Skala Mitchy Around the World",
"EMATW - Eldo Mitchy Around the World",
"AEATW - Alternate Eldo Around the World",
"PATW - Palle Around the World",
"PMATW - Palle Mitchy Around the World",
"APATW - Alternate Palle Around the World"
};
private String[] upper = {
"Head Stall",
"Top Head Stall",
"Side Head Stall",
"Shoulder Stall",
"Neck Stall",
"360",
"Chest Stall",
"ATM - Around The Moon",
"Carousel",
"Pavel Roll",
"LIP Stall",
"Arm Roll",
"Nose Stall",
"Neck Flick",
"LATM - Luki Around the Moon",
};
private String[] sitDown = {
"Shin Stall",
"Sole Stall",
"Abdullah",
"Sole Juggle",
"Shin ATW",
"Dimetto"
};
private String[] combosFamosos= {
"CNK NT Combo",
"Skóra NT Combo",
"Palle Combo",
"Palle Combo 2"
};
private ImageView imageView;
private int codigo;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tricks);
Intent intent = getIntent();
codigo = intent.getIntExtra("codigo", 0);
//Toast.makeText(this, ""+codigo, Toast.LENGTH_SHORT).show();
listView = findViewById(R.id.listview_xml);
if (codigo == 0){
CustomAdapter0 customAdapter0 = new CustomAdapter0(lower, TricksActivity.this);
listView.setAdapter(customAdapter0);
}if (codigo == 1){
CustomAdapter0 customAdapter0 = new CustomAdapter0(upper, TricksActivity.this);
listView.setAdapter(customAdapter0);
}if (codigo == 2){
CustomAdapter0 customAdapter0 = new CustomAdapter0(sitDown, TricksActivity.this);
listView.setAdapter(customAdapter0);
}if (codigo == 3){
CustomAdapter0 customAdapter0 = new CustomAdapter0(combosFamosos, TricksActivity.this);
listView.setAdapter(customAdapter0);
}if (codigo == 4){
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getApplicationContext(), VideoActivity.class);
if(codigo == 0){
//Toast.makeText(TricksActivity.this, ""+lower[i], Toast.LENGTH_SHORT).show();
intent.putExtra("trick", lower[i]);
}
if(codigo == 1){
//Toast.makeText(TricksActivity.this, ""+upper[i], Toast.LENGTH_SHORT).show();
intent.putExtra("trick", upper[i]);
}
if(codigo == 2){
//Toast.makeText(TricksActivity.this, ""+sitDown[i], Toast.LENGTH_SHORT).show();
intent.putExtra("trick", sitDown[i]);
}
if(codigo == 3){
//Toast.makeText(TricksActivity.this, ""+combosFamosos[i], Toast.LENGTH_SHORT).show();
intent.putExtra("trick", combosFamosos[i]);
}
startActivity(intent);
}
});
}
}
答案 0 :(得分:0)
您的适配器代码只关注&#39; isClicked&#39;只有一个项目。尝试使用此适配器代码,它会保持“点击”状态。每个项目:
public class CustomAdapter0 extends BaseAdapter {
public CustomAdapter0(String[] tricks, Context context) {
this.tricks = tricks;
this.context = context;
isClicked = new boolean[tricks.length];
for(int i = 0; i < isClicked.length; i++) isClicked[i] = false;
}
private String[] tricks;
private Context context;
//private boolean isClicked;
private boolean[] isClicked;
private LayoutInflater layoutInflater;
@Override
public int getCount() {
return tricks.length;
}
@Override
public Object getItem(int i) {
return tricks[i];
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
View row = convertView;
if(convertView == null){
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.custom_listview_tricks, null);
}
TextView textView = row.findViewById(R.id.name_xml);
ImageButton imageButton = row.findViewById(R.id.unmastered_xml);
textView.setText(tricks[i]);
if (isClicked[i]) imageButton.setBackgroundResource(R.drawable.mastered);
else imageButton.setBackgroundResource(R.drawable.unmastered);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageButton clcikedView = (ImageButton) view;
int clickedPosition = (int)clickedView.getTag();
isClicked[clickedPosition] = !isClicked[clickedPosition];
notifyDataSetChanged();
}
});
imageButton.setTag(i);
return row;
}
}
希望它有所帮助!