如何根据 activity 您所在的位置从 CustomAdapter 隐藏元素?
How to hide an element from CustomAdapter based on what activity you are in?
我正在尝试制作一款需要您猜数字的游戏。我让用户 select 他们想要多少位数。
我的自定义适配器最初是为 3 位数字构建的,当用户 select 的 2 位数字时,一切正常,但当应用程序为 [=29= 时,digit_3 始终为 0 ],我只想隐藏,怎么办?
See screenshot for how it looks like, I want to hide the marked part when user enters the 2 digit activity
这是适配器:
package com.apphorizon.guessthenumber;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class ListAdapter extends ArrayAdapter<List> {
public ListAdapter(Context context, ArrayList<List> arrayList) {
super(context, 0, arrayList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
List currentItem = getItem(position);
TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
num1View.setText(String.valueOf(currentItem.getNum1()));
TextView num2View = (TextView)listItemView.findViewById(R.id.num_2_view);
num2View.setText(String.valueOf(currentItem.getNum2()));
TextView num3View = (TextView) listItemView.findViewById(R.id.num_3_view);
num3View.setText(String.valueOf(currentItem.getNum3()));
TextView correctPositionView = (TextView)listItemView.findViewById(R.id.correct_position_view);
correctPositionView.setText(String.valueOf(currentItem.getCorrectPosition()));
TextView wrongPositionView = (TextView)listItemView.findViewById(R.id.wrong_position_view);
wrongPositionView.setText(String.valueOf(currentItem.getWrongPositionCorrectNumber()));
return listItemView;
}
}
这是列表 class
package com.apphorizon.guessthenumber;
public class List {
private int mNum1;
private int mNum2;
private int mNum3;
private int mCorrectPosition;
private int mWrongPositionCorrectNumber;
public List(int num1, int num2, int num3, int correctPosition, int wrongPositionCorrectNumber){
mNum1 = num1;
mNum2 = num2;
mNum3 = num3;
mCorrectPosition = correctPosition;
mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
}
public List(int num1, int num2, int correctPosition, int wrongPositionCorrectNumber){
mNum1 = num1;
mNum2 = num2;
mCorrectPosition = correctPosition;
mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
}
public int getNum1(){
return mNum1;
}
public int getNum2(){
return mNum2;
}
public int getNum3(){
return mNum3;
}
public int getCorrectPosition(){
return mCorrectPosition;
}
public int getWrongPositionCorrectNumber(){
return mWrongPositionCorrectNumber;
}
}
该应用程序目前仅针对 2 位和 3 位数字进行了自定义,尚未添加更多!
您想将最后一个文本视图的可见性设置为不可见,如果它是一个 2 位数字的话。
因此,我建议您在 List
class 中进行以下更改。
private int num1 = -1;
private int num2 = -1;
private int num3 = -1;
这样,如果 num1
、num2
或 num3
为 -1,您可以通过适配器中的此更改使相应的文本视图不可见
if(currentItem.getNum1() != -1) {
TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
num1View.setText(String.valueOf(currentItem.getNum1()));
}
else listItemView.findViewById(R.id.num_1_view).setVisibility(View.INVISIBLE);
与 num2
和 num3
类似。
The app is currently only customized for 2 and 3 digit numbers, yet to add more!
通过此更改,您将能够实现添加更多的目标,因为这也将支持 1 位数字。如果您不想要一位数字,请不要将上面的代码应用于 num1
,只需应用于 num2
和 num3
.
我正在尝试制作一款需要您猜数字的游戏。我让用户 select 他们想要多少位数。
我的自定义适配器最初是为 3 位数字构建的,当用户 select 的 2 位数字时,一切正常,但当应用程序为 [=29= 时,digit_3 始终为 0 ],我只想隐藏,怎么办?
See screenshot for how it looks like, I want to hide the marked part when user enters the 2 digit activity
这是适配器:
package com.apphorizon.guessthenumber;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class ListAdapter extends ArrayAdapter<List> {
public ListAdapter(Context context, ArrayList<List> arrayList) {
super(context, 0, arrayList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
List currentItem = getItem(position);
TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
num1View.setText(String.valueOf(currentItem.getNum1()));
TextView num2View = (TextView)listItemView.findViewById(R.id.num_2_view);
num2View.setText(String.valueOf(currentItem.getNum2()));
TextView num3View = (TextView) listItemView.findViewById(R.id.num_3_view);
num3View.setText(String.valueOf(currentItem.getNum3()));
TextView correctPositionView = (TextView)listItemView.findViewById(R.id.correct_position_view);
correctPositionView.setText(String.valueOf(currentItem.getCorrectPosition()));
TextView wrongPositionView = (TextView)listItemView.findViewById(R.id.wrong_position_view);
wrongPositionView.setText(String.valueOf(currentItem.getWrongPositionCorrectNumber()));
return listItemView;
}
}
这是列表 class
package com.apphorizon.guessthenumber;
public class List {
private int mNum1;
private int mNum2;
private int mNum3;
private int mCorrectPosition;
private int mWrongPositionCorrectNumber;
public List(int num1, int num2, int num3, int correctPosition, int wrongPositionCorrectNumber){
mNum1 = num1;
mNum2 = num2;
mNum3 = num3;
mCorrectPosition = correctPosition;
mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
}
public List(int num1, int num2, int correctPosition, int wrongPositionCorrectNumber){
mNum1 = num1;
mNum2 = num2;
mCorrectPosition = correctPosition;
mWrongPositionCorrectNumber = wrongPositionCorrectNumber;
}
public int getNum1(){
return mNum1;
}
public int getNum2(){
return mNum2;
}
public int getNum3(){
return mNum3;
}
public int getCorrectPosition(){
return mCorrectPosition;
}
public int getWrongPositionCorrectNumber(){
return mWrongPositionCorrectNumber;
}
}
该应用程序目前仅针对 2 位和 3 位数字进行了自定义,尚未添加更多!
您想将最后一个文本视图的可见性设置为不可见,如果它是一个 2 位数字的话。
因此,我建议您在 List
class 中进行以下更改。
private int num1 = -1;
private int num2 = -1;
private int num3 = -1;
这样,如果 num1
、num2
或 num3
为 -1,您可以通过适配器中的此更改使相应的文本视图不可见
if(currentItem.getNum1() != -1) {
TextView num1View = (TextView)listItemView.findViewById(R.id.num_1_view);
num1View.setText(String.valueOf(currentItem.getNum1()));
}
else listItemView.findViewById(R.id.num_1_view).setVisibility(View.INVISIBLE);
与 num2
和 num3
类似。
The app is currently only customized for 2 and 3 digit numbers, yet to add more!
通过此更改,您将能够实现添加更多的目标,因为这也将支持 1 位数字。如果您不想要一位数字,请不要将上面的代码应用于 num1
,只需应用于 num2
和 num3
.