gpt4 book ai didi

java - 将 listView 数据从一个 Activity 发送到另一 Activity

转载 作者:行者123 更新时间:2023-12-02 01:37:13 26 4
gpt4 key购买 nike

我试图弄清楚如何从 listView 获取数据,将其存储在数组中,并能够在另一个 Activity 中访问该数据数组。我会为此做一个 Intent 并将其作为额外内容传递吗?我四处搜寻但没有得到明确的答案。我希望能够访问该数据数组,以便我可以在另一个 Activity 中随机显示它。

listView.java

    public class ListView extends AppCompatActivity {
private static final String TAG = "ListView";

private EditText editText;
private android.widget.ListView listView;

DatabaseHelper mDatabaseHelper;
Button btnAdd;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
mDatabaseHelper = new DatabaseHelper(this);
btnAdd = (Button) findViewById(R.id.btnAdd);
editText = (EditText) findViewById(R.id.editText);
listView = (android.widget.ListView) findViewById(R.id.lv);


ArrayList<String> list = getIntent().getStringArrayListExtra("myList");

android.widget.ListView lv = (android.widget.ListView) findViewById(R.id.lv);

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

lv.setAdapter(adapter);


//Takes user back to the main activity after clicking on back arrow
ImageView ivBack = (ImageView) findViewById(R.id.ivBackArrow);
ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: pressed back arrow");
Intent intent = new Intent(ListView.this, MainActivity.class);
startActivity(intent);
}
});

//Adds new hashtag to list and prompts if nothing is entered
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newEntry = editText.getText().toString();

if (editText.length() != 0) {
addData(newEntry);
editText.setText("");
} else {
toastMessage("you must put something in the text field");
}
}
});

populateListView();
}

/**
* Adds new data into the Database
* @param newEntry
*/
public void addData(String newEntry) {
boolean insertData = mDatabaseHelper.addData(newEntry);

if (insertData) {
toastMessage("Successfully inserted");
recreate();
} else {
toastMessage("Whoops, something went wrong");
}
}

/**
* Default toastMessage
* @param message
*/
private void toastMessage(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}

/**
* Populate listView with data and create listener to navigate to editDeleteList
*/
private void populateListView() {
Log.d(TAG, "populateListView: displaying data in the listview");

//get data and append to list
Cursor data = mDatabaseHelper.getData();
ArrayList<String> listData = new ArrayList<>();
while(data.moveToNext()) {
//get the value from the database in column 1
//set it to the arraylist
listData.add(data.getString(1));
}
//create arraylist and set it to the adapter
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listData);
listView.setAdapter(adapter);

//set onclick listen to edit activity
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
String name = adapterView.getItemAtPosition(position).toString();
Log.d(TAG, "onItemClick: you clicked on " + name);

Cursor data = mDatabaseHelper.getItemID(name); //get the id associated with that name
int itemID = -1;
while (data.moveToNext()) {
itemID = data.getInt(0);
}
if (itemID > -1) {
Log.d(TAG, "onItemID: the ID is: " + itemID);
Intent editScreenIntent = new Intent(ListView.this, EditDeleteList.class);
editScreenIntent.putExtra("id",itemID);
editScreenIntent.putExtra("name",name);
startActivity(editScreenIntent);
} else {
toastMessage("No ID found");
}
}
});
}

/**
* Updates the listView after navigating back from EditDeleteList activity
*/
@Override
protected void onResume() {
super.onResume();
populateListView();
}
}

最佳答案

  1. 从listView获取数据:

    public static String[] getStringArray(ListAdapter adapter){
    String[] a = new String[adapter.getCount()];
    for (int i = 0; i < a.length; i++)
    a[i] = adapter.getItem(i).toString();
    return a;}

    String[] array = getStringArray(myListView.getAdapter());

  2. 将数组从 Activity 发送到另一个 Activity :

    Intent intent = new Intent(context, Class.class);
    intent.putExtra("mylist", array);

  3. 将其返回到另一个 Activity 中:

    ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");

  4. 您可以传递 ArrayList<E>同样的方式,如果E类型是可序列化的。

关于java - 将 listView 数据从一个 Activity 发送到另一 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com