我正在尝试制作一个应用程序,其中我想将值从 editText(MainActivity.java)
传递到 listView(bestFitActivity.java)
,它是放置在另一个 Activity 中。我的代码的问题是它只向 listView
传递一个值。当我输入新值时,它只会替换以前的值。
MainActivity.java
public class MainActivity extends AppCompatActivity {
int i = 0;
String getChunkSize;
ArrayList<String> chunkSizeArray = new ArrayList<>();
EditText chunkSize;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button chunkSave = (Button)findViewById(R.id.chunkSave);
Button processSave = (Button)findViewById(R.id.processSave);
Button bestFitDirector = (Button)findViewById(R.id.bestFitdirector);
Button worstFitDirector = (Button)findViewById(R.id.worstFitdirector);
Button firstFitDirector = (Button)findViewById(R.id.firstFitDirector);
EditText processSize = (EditText)findViewById(R.id.processSize);
chunkSize = (EditText)findViewById(R.id.chunkSize);
chunkSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i++;
Log.d("Manager" , "%d" +i);
getChunkSize = chunkSize.getText().toString();
//Log.d("Manager" , "" +getChunkSize);
if(getChunkSize == null ) {
Toast.makeText(getBaseContext(), "Empty Input", Toast.LENGTH_SHORT).show();
}
}
});
bestFitDirector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(MainActivity.this , bestFitActivity.class);
myIntent.putExtra("chunkSizeArray" , getChunkSize );
startActivity(myIntent);
}
});
/*worstFitDirector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent2 = new Intent (MainActivity.this , worstFitActivity.class);
startActivity(myIntent2);
}
});
firstFitDirector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent3 = new Intent (MainActivity.this , firstFitActivity.class);
startActivity(myIntent3);
}
});*/
}
}
bestFitActivity.java
public class bestFitActivity extends AppCompatActivity {
String chunkSIZE;
ArrayList<String> chunkSizeArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_best_fit);
ListView blockSize = (ListView)findViewById(R.id.blockSize);
ListView finalProcessList = (ListView)findViewById(R.id.finalprocesslist);
chunkSIZE = getIntent().getExtras().getString("chunkSizeArray");
Log.d("Manager" , " "+chunkSIZE);
chunkSizeArray.add(chunkSIZE);
Log.d("Manager" , ""+chunkSIZE);
ArrayAdapter<String> adapter = new ArrayAdapter<>(bestFitActivity.this , android.R.layout.simple_expandable_list_item_1 , chunkSizeArray);
blockSize.setAdapter(adapter);
adapter.notifyDataSetChanged();
//((EditText)findViewById(R.id.chunkSize)).setText(" ");
//EditText tv = (EditText) findviewbyID(R.id.)
}
}
PS:此代码不完整
最佳答案
每次单击该按钮时,都会创建一个新的 Activity ,其中包含一个新的空 chunkSize ArrayList,仅使用单个值。
您可以在每次单击按钮时添加到 MainActivity 中的 chunkSizeArray,然后在各个 IntentExtras 中发送计数器和数组的值。
然后从 bestFitActivity 中的所有 Intent Extra 中检索并构建 ArrayList。
这就是你可以做到的
public class MainActivity extends AppCompatActivity {
public static final String INTENTKEY_ARRAYELEMENTS = "arrayelemets";
public static final String INTENYKEY_ELEMENTX = "element_";
private static ArrayList<String> chunkSizeArray = new ArrayList<>();
Button bestFitDirector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bestFitDirector = (Button)findViewById(R.id.bestFitdirector);
bestFitDirector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chunkSizeArray.add("Test" + String.valueOf(chunkSizeArray.size() + 1));
Intent myitent = new Intent(MainActivity.this,bestFitActivity.class);
myitent.putExtra(INTENTKEY_ARRAYELEMENTS, chunkSizeArray.size());
for (int i=0; i < chunkSizeArray.size(); i++) {
myitent.putExtra(INTENYKEY_ELEMENTX + String.valueOf(i),chunkSizeArray.get(i));
}
startActivity(myitent);
}
});
}
}
和
public class bestFitActivity extends AppCompatActivity {
ArrayList<String> chunkSizeArray = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_best_fit);
Intent mypassedIntent = getIntent();
int elements = mypassedIntent.getIntExtra(MainActivity.INTENTKEY_ARRAYELEMENTS,0);
for (int i = 0; i < elements; i++) {
chunkSizeArray.add(mypassedIntent.getStringExtra(MainActivity.INTENYKEY_ELEMENTX + String.valueOf(i)));
}
Toast.makeText(this,"The number of strings in the chukSizeArray is " + String.valueOf(chunkSizeArray.size()),Toast.LENGTH_SHORT).show();
for (String s: chunkSizeArray) {
Log.d("chunkSizeArray Value",s);
}
}
}
点击5次后(点击返回返回MainActivity)日志为
2019-03-10 17:19:51.687 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test1
2019-03-10 17:19:56.362 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test1
2019-03-10 17:19:56.362 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test2
2019-03-10 17:19:59.877 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test1
2019-03-10 17:19:59.877 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test2
2019-03-10 17:19:59.877 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test3
2019-03-10 17:20:03.007 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test1
2019-03-10 17:20:03.007 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test2
2019-03-10 17:20:03.007 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test3
2019-03-10 17:20:03.007 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test4
2019-03-10 17:20:06.266 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test1
2019-03-10 17:20:06.266 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test2
2019-03-10 17:20:06.266 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test3
2019-03-10 17:20:06.266 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test4
2019-03-10 17:20:06.266 11271-11271/com.example.bestfitapp D/chunkSizeArray Value: Test5
添加间隙以分割点击次数
更简单的方法是使用 putStringArrayListExtra 和 getStringArrayListExtra 方法,这基本上代表您执行循环。
所以主要 Activity 有
public static final String INTENTKEY_ARRAY = "bestfitarray";
在 onClick 监听器中,您可以:-
myitent.putStringArrayListExtra(INTENTKEY_ARRAY,chunkSizeArray);
随着
myitent.putStringArrayListExtra(INTENTKEY_ARRAY,chunkSizeArray);
在 bestFitActivity 中。
关于java - 将项目添加到另一个 Activity 中的 ListView (仅添加 1 个条目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084653/