我的情况是这样的。 主界面是用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 就返回默认颜色。
Gunakan fail
selector
untuk menetapkan warna latar belakang itemsebagai contoh
Selector_item_bg.xml diletakkan dalam folder sumber
res/color/
Antaranya
anda sendiri@color/red
dan@color/green
tambahkanKemudian tambahkan warna latar belakang pada reka letak item, itu milik anda
row.xml
Kod utama ialah
android:background="@color/selector_item_bg"
menetapkanselector
di atas kepada warna latar belakang item.Apabila anda mengklik untuk membuka jadual, Paparan
setSelected(true)
item yang sepadan akan bertukar menjadi merah.Mungkin ubah suai anda dalam kod
onItemClick()
Ini adalah perkara utama, butiran lain boleh didapati di Baidu