Android onItemLongClick 将位置添加到不同的 arrayList activity
Android onItemLongClick adds position to the arrayList in different activity
我有两个活动。
我的目标是:长按activity2中任意ListView
位置后,我要一些String
将添加到 activity 1 中的 ListView
。从 activity 2 我要返回 activity 1 按 back
按钮。每个 ListView
都有不同的 adapter
。
我尝试使用 Bundle
(输入 extra
),但它会使应用程序崩溃。
来自 activity 1 的代码片段:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_layout);
mDrawerList = (ListView)findViewById(R.id.navList);
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mActivityTitle = getTitle().toString();
addDrawerItems();
setupDrawer();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
private void addDrawerItems() { //It adds text ect. to listView - It works so I cut out the rest of code
ar.add("anything");
ar.add(lv.try);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ar);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
});
}
只需像 ar.add("anything");
那样添加就可以了。 lv.try
默认包含文本 "First text"。我试图在 activity 2 onItemLongClick
fragment
代码中更新此变量:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//What to type here?
return false;
}
});
简单地说 try = "Second text";
不会更新我的 try 变量。我也尝试使用 Bundle
(extras
) 但没有成功。有什么想法吗?
加仓是什么意思?
在我看来,添加位置意味着向结构(数组、列表等)添加一个元素。
所以基本上我的意思是你可以在你的 CustomApplicatioClass 中有一个数组或者甚至是一个静态数组(有人可能不同意我的看法)并且 onItemLongClick() 在结构中添加你想要的元素。
然后当您使用 ListView 加载 Activity 时,您可以使用更新后的结构来处理您的 ListView 内容
希望对您有所帮助
不知道我问的有没有看懂。不管怎样,你试过重写 onBackPressed 吗?
在第二个 activity 中,您创建了一个布尔变量并将其初始化为 false,然后在执行长按时更改其值:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
longClick = true;
return false;
}
});
记住,longClick 必须是一个 class 变量!
在 onCreate 之外:
@Override
public void onBackPressed() {
Intent intent = new Intent(SecondActivityName.this, FirstActivity.class);
intent.putExtra("longClick", longClick);
finish();
startActivity(setIntent);
}
第一个 Activity:
Intent intent = getIntent();
if (intent.getBooleanExtra("longClick", false)) {
addDrawerItems();
}
我有两个活动。
我的目标是:长按activity2中任意ListView
位置后,我要一些String
将添加到 activity 1 中的 ListView
。从 activity 2 我要返回 activity 1 按 back
按钮。每个 ListView
都有不同的 adapter
。
我尝试使用 Bundle
(输入 extra
),但它会使应用程序崩溃。
来自 activity 1 的代码片段:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_layout);
mDrawerList = (ListView)findViewById(R.id.navList);
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
mActivityTitle = getTitle().toString();
addDrawerItems();
setupDrawer();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
private void addDrawerItems() { //It adds text ect. to listView - It works so I cut out the rest of code
ar.add("anything");
ar.add(lv.try);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ar);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
});
}
只需像 ar.add("anything");
那样添加就可以了。 lv.try
默认包含文本 "First text"。我试图在 activity 2 onItemLongClick
fragment
代码中更新此变量:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//What to type here?
return false;
}
});
简单地说 try = "Second text";
不会更新我的 try 变量。我也尝试使用 Bundle
(extras
) 但没有成功。有什么想法吗?
加仓是什么意思?
在我看来,添加位置意味着向结构(数组、列表等)添加一个元素。
所以基本上我的意思是你可以在你的 CustomApplicatioClass 中有一个数组或者甚至是一个静态数组(有人可能不同意我的看法)并且 onItemLongClick() 在结构中添加你想要的元素。
然后当您使用 ListView 加载 Activity 时,您可以使用更新后的结构来处理您的 ListView 内容
希望对您有所帮助
不知道我问的有没有看懂。不管怎样,你试过重写 onBackPressed 吗?
在第二个 activity 中,您创建了一个布尔变量并将其初始化为 false,然后在执行长按时更改其值:
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
longClick = true;
return false;
}
});
记住,longClick 必须是一个 class 变量!
在 onCreate 之外:
@Override
public void onBackPressed() {
Intent intent = new Intent(SecondActivityName.this, FirstActivity.class);
intent.putExtra("longClick", longClick);
finish();
startActivity(setIntent);
}
第一个 Activity:
Intent intent = getIntent();
if (intent.getBooleanExtra("longClick", false)) {
addDrawerItems();
}