我的情况是这样的。 主界面是用Gridview展示出餐厅里的餐桌情况。
默认情况下,每个桌子都是绿色背景。 如果点击该item, 会出现一个Dialog 窗口;提示是否开桌子。 如果点击是,该item的背景颜色更换为红色。
以下是我的代码,请大神们指点迷津!
public class table extends AppCompatActivity implements AdapterView.OnItemClickListener{
GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table);
gridView=(GridView)findViewById(R.id.gridview);
String wtf[]={"1a","1b","1c","1d","2a","2b","2c","2d","3a","3b","3c","3d"};
gridView.setAdapter(new my_adapter(this,wtf));
gridView.setOnItemClickListener(this);
}
@Override
public void onItemClick(final AdapterView<?> adapterView, View view, final int i, long l) {
new AlertDialog.Builder(this)
.setTitle("台座号 "+adapterView.getItemAtPosition(i).toString())
.setMessage("确定开桌?")
.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(table.this,adapterView.getItemAtPosition(i).toString()+" 已开桌,请下单。",Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("否", null)
.show();
}
}
class my_adapter extends BaseAdapter{
LayoutInflater inflater=null;
Context ctx;
String table_names[];
ArrayList store_table_no;
my_adapter(Context ctx, String table_names[]){
this.ctx=ctx;
this.table_names=table_names;
store_table_no=new ArrayList<Integer>();
for (int i=0;i<table_names.length;i++){
store_table_no.add(table_names[i]);
}
}
@Override
public int getCount() {
return store_table_no.size();
}
@Override
public Object getItem(int i) {
return store_table_no.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View row=view;
if(row==null){
inflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=inflater.inflate(R.layout.single,null);
}
TextView tv_table_no=(TextView)row.findViewById(R.id.table_no);
tv_table_no.setText(""+store_table_no.get(i));
return row;
}
}
// 这个是 row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="170dp"
android:layout_height="100dp"
android:background="@android:color/holo_green_dark"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true">
<TextView
android:text="101"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/table_no"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</RelativeLayout>
如果再次点击同样item, 窗口再次出现,点击 ok 就返回默认颜色。
Utilisez le fichier
selector
pour définir la couleur d'arrière-plan de l'élémentpar exemple
Selector_item_bg.xml est placé dans le dossier des ressources
res/color/
Parmi eux
@color/red
et@color/green
ajoutez le vôtreAjoutez ensuite une couleur de fond à la mise en page de l'article, c'est la vôtre
row.xml
Le code clé consiste à
android:background="@color/selector_item_bg"
définir ce qui précèdeselector
sur la couleur d'arrière-plan de l'article.Lorsque vous cliquez pour ouvrir le tableau, la vue
setSelected(true)
de l'élément correspondant deviendra rouge.Modifiez probablement le vôtre dans le code
onItemClick()
Ce sont les points clés, d'autres détails peuvent être trouvés sur Baidu