更新了我的代码..
当我从(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();
}
});
}
答案 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();