从另一个Activity中删除GridView onClick中的项目

时间:2014-06-15 15:21:24

标签: android button gridview android-activity

更新了我的代码..

当我从(Day03活动)点击btn按钮时,我想从GridView(主要活动)中删除一个项目。

以下是我的活动:

public class Main扩展Activity {

GridView gridView;
public static int deletePos;

static ArrayAdapter adapter;

static final String[] numbers = new String[] { "1", "2", "3", "4", "5",
        "6", "7" };
static final String[] activities = new String[] { "Day01", "Day02",
        "Day03", "Day04", "Day05", "Day06", "Day07" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.grid);

    gridView = (GridView) findViewById(R.id.grid1);

    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, numbers);

    gridView.setAdapter(adapter);

    gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

            String val = activities[arg2]; // arg2 is the index of item
            Class ourClass = null;
            try {
                ourClass = Class.forName("com.example.cahllenge." + val);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Intent intent = new Intent(Main.this, ourClass);

            deletePos = arg2;
            adapter.notifyDataSetChanged();

            startActivity(intent);

        }
    });

}

和Day03活动    公共课Day03扩展了活动{

Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn = (Button) findViewById(R.id.ok);

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int deletePos = Main.deletePos;
            Main.adapter.remove(deletePos);
            Main.adapter.notifyDataSetChanged();

        }
    });
}

2 个答案:

答案 0 :(得分:0)

嗨首先,从其他活动中删除grdView项目并不是一个好习惯。无论如何,如果你想从另一个活动中删除它,你可以试试这个(没有什么是不可能的)。这可能会给你一些解决问题的技巧。

在MainActivity中创建一个deletegridViewItem(){}方法,如果单击该按钮,则从Day03活动中调用deletegridViewItem()方法。你需要管理哪些项目应该删除。希望这对你有所帮助。

看到这个编辑过的一个......

嘿试试这可能会给你一些线索......不要打电话 adapter.notifyDataSetChanged();在deletePos = arg2之后;只需调用你的startActivityForResult(intent,REQUEST_CODE);在此之前使用intent.putExtra将你的deletePos置于意图中 - 在你的day03活动中接下来点击按钮调用完成方法就像这样

 @Override
 public void finish() {
 // Prepare data intent 
 Intent data = new Intent();
 data.putExtra("put deletepos back to intent ");

 // Activity finished ok, return the data
 setResult(RESULT_OK, data);
 super.finish();
} 

接下来在你的mainActivity句柄中使用onActivityresult()方法和onActivityResult方法调用remove方法。并通知数据集方法......

答案 1 :(得分:0)

如果你真的想这样做,并且不使用静态,我会这样做:

在您的主要活动上创建一个onNewIntent()

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    int deleteMe = intent.getIntExtra('hasDeleted', 0);
    if (deleteMe > 0) {
        // delete numbers if it was List or update setAdapter with new numbers list
        adapter.notifyDataSetChanged();
    }
}

以及完成onClick后的其他活动:

Intent intent = new Intent(Day03.this, Main.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("hasDeleted", toDeleteNumber);
startActivity(intent);
finish();