Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除gridview中的按钮_Android_Android Gridview - Fatal编程技术网

Android 删除gridview中的按钮

Android 删除gridview中的按钮,android,android-gridview,Android,Android Gridview,我有一个gridview,有8个按钮、2行和4列。我正在尝试删除一个按钮甚至一行..一行可能更好..我希望在单击按钮时执行此删除..任何按钮。我在这方面遇到了麻烦。我将向您展示到目前为止的代码: 主要活动: public class MainActivity extends Activity { private TextView text; private GridView gridView; private TextView timerValue; private Boolean first

我有一个gridview,有8个按钮、2行和4列。我正在尝试删除一个按钮甚至一行..一行可能更好..我希望在单击按钮时执行此删除..任何按钮。我在这方面遇到了麻烦。我将向您展示到目前为止的代码:

主要活动:

public class MainActivity extends Activity {

private TextView text;
private GridView gridView;
private TextView timerValue;
private Boolean firstclick = false;
private long startTime = 0L;
private Handler customHandler = new Handler();
private Button buttonclicked;
Random r = new Random();
//private int[] rannumbers_array = new int[32];
private int[] shuffle_array = new int[4];
private String[] items = new String[8];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    text = (TextView) findViewById(R.id.feedback);
    timerValue = (TextView) findViewById(R.id.timerValue);
    timerValue.setTextColor(Color.GREEN);
    int j = 0;
    int k = 0;
    int ranval = 0;
    for(int i = 0; i < 8; i++)
    {
        if ( (i % 4) == 0)
        {
            for(int x = 0; x < 4; x++)
            {
                shuffle_array[x] = 0;
            }
            do {
                ranval = r.nextInt(100);
            } while((ranval % 2) != 0);
        }
        else
        {
            do {
                ranval = r.nextInt(100);
            } while((ranval % 2) == 0); 
        }
        shuffle_array[j] = ranval;
        j++;
        if(j >= 4)
        {
            j = 0;
            shuffle(shuffle_array);
            do {
               items[k] = Integer.toString(shuffle_array[j]);
               k++;
               j++;
            } while(k <= i);
            j = 0;
        }
        //rannumbers_array[i] = r.nextInt(100);
        //items[i] = Integer.toString(rannumbers_array[i]);
    }
    k = 0;




    gridView = (GridView) this.findViewById(R.id.myGridView);
    final CustomGridAdapter gridAdapter = new CustomGridAdapter(MainActivity.this, items);
    gridView.setAdapter(gridAdapter);
    buttonclicked = gridAdapter.getbutton();
    gridView.post(new Runnable() {
        public void run() {
            gridView.setSelection(gridView.getCount() - 1);
        }
    });
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if(!firstclick)
            {
               customHandler.postDelayed(updateTimerThread, 0);
               firstclick = true;
            }
            buttonclicked.setVisibility(view.GONE);
}

cell.xml:

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/grid_item"
android:layout_gravity="center"
android:maxHeight="175dip"
android:layout_marginLeft="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="05"
android:textSize="25sp"
android:clickable="false"
android:focusable="false"/>
activitymain.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame" >

<TextView
    android:id="@+id/timerValue"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="2dp"
    android:text="@string/timerVal"
    android:textColor="#ffffff"
    android:textSize="30sp" />

<GridView
    android:id="@+id/myGridView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:columnWidth="90dp"
    android:horizontalSpacing="0dp"
    android:numColumns="4"
    android:verticalSpacing="0dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:id="@+id/feedback"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />

按钮Click.setVisibilityview.GONE;没有工作,给了我一个错误,我想。我正在尝试单击某个按钮或项目,并删除该项目和/或该项目所在的行。如何执行此操作?我错过了什么?删除发生后,我将需要重新绘制网格,以减少其中的项目太多。这就是我现在要解决的两件事

使用OnItemClick实现中的view参数,此函数将为您提供网格的位置、单元格视图以及适配器上自定义项的id

   gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if(!firstclick)
        {
           customHandler.postDelayed(updateTimerThread, 0);
           firstclick = true;
        }
        //buttonclicked.setVisibility(view.GONE);
        view.findViewById(R.id.grid_item).setVisibility(view.GONE);
     }
   }

尝试将声明输入的位置更改为OnCreate with final

   gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if(!firstclick)
        {
           customHandler.postDelayed(updateTimerThread, 0);
           firstclick = true;
        }
        //buttonclicked.setVisibility(view.GONE);
        view.findViewById(R.id.grid_item).setVisibility(view.GONE);
     }
   }