我的情况是这样的。 主界面是用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 就返回默认颜色。
ringa_lee2017-04-17 17:50:00
selector
파일을 사용하여
항목의 배경색을 설정합니다(예:
Selector_item_bg.xml은 리소스 폴더 res/color/
그 중 @color/red
및 @color/green
나만의 것을 추가하세요
그런 다음 항목 레이아웃에 배경색을 추가하면 됩니다. row.xml
키코드는 android:background="@color/selector_item_bg"
위 항목selector
을 해당 아이템의 배경색으로 설정
클릭하여 표를 열면 해당 항목의 보기setSelected(true)
가 빨간색으로 변합니다.
아마도 코드를 수정해 보세요onItemClick()
이것이 핵심 사항이며, 자세한 사항은 바이두에서 확인하실 수 있습니다