Android onItemLongClick 将位置添加到不同的 arrayList activity

Android onItemLongClick adds position to the arrayList in different activity

我有两个活动。

我的目标是:长按activity2中任意ListView位置后,我要一些String 将添加到 activity 1 中的 ListView。从 activity 2 我要返回 activity 1back 按钮。每个 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(); 
}