【发布时间】:2016-08-04 18:52:04
【问题描述】:
我正在创建包含 6 个项目 (2*3) 的网格视图。
我正在实现它以动态更改设置。
为此,我使用带有文本视图的网格视图。
my code is:
public class MyGridAdaptor extends BaseAdapter
{
String[] keyPad = { "1", "2", "3", "4", "5", "6" };
String[] functionName = { "Wi-Fi", "Bluetooth", "GPS", "Brightness", "Wi-Fi Tethering", "Mobile data", };
String[][] functionStatus = { { "OFF", "ON" }, { "OFF", "ON" }, { "OFF", "ON" }, { "OFF", "ON" }, { "OFF", "ON" }, { "OFF", "ON" } };
LayoutInflater inflater;
Context mContext;
TextView keyNumber, fName, fStatus;
RelativeLayout gridItem;
int counter = 0;
public MyGridAdaptor(Context applicationContext)
{
this.mContext = applicationContext;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
final int pos = position;
if (view == null)
{
view = inflater.inflate(R.layout.grid_item, null);
DisplayMetrics metrics = new DisplayMetrics();
metrics = mContext.getResources().getDisplayMetrics();
int height = metrics.heightPixels;
int heightAdj = 85;
view.setMinimumHeight((height - heightAdj) / 2);
keyNumber = (TextView) view.findViewById(R.id.tvNo);
fName = (TextView) view.findViewById(R.id.tvName);
fStatus = (TextView) view.findViewById(R.id.tvStatus);
gridItem = (RelativeLayout) view.findViewById(R.id.gridItem);
}
else
{
view.getTag();
}
keyNumber.setText(keyPad[position]);
fName.setText(functionName[position]);
fStatus.setText(functionStatus[position][0]);
gridItem.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
counter++;
Toast.makeText(mContext, functionName[pos]+" "+pos+" "+(counter%2)+" "+functionStatus[pos][counter%2], Toast.LENGTH_SHORT).show();
fStatus.setText(functionStatus[pos][counter%2]);
notifyDataSetChanged();
}
});
return view;
}
@Override
public int getCount()
{
// TODO Auto-generated method stub
return keyPad.length;
}
@Override
public Object getItem(int position)
{
// TODO Auto-generated method stub
return keyPad[position];
}
@Override
public long getItemId(int position)
{
// TODO Auto-generated method stub
return 0;
}
}
我在 Toast 中获得了正确的值,但 Textview 中的值没有改变。
【问题讨论】:
-
你为什么不为你的视图设置标签?
view.setTag()在哪里。从我所见,如果view == null为假,您实际上并没有设置对 rStatus 的引用? -
@Raju-san ,检查我的答案。
标签: android gridview textview android-adapter