简体   繁体   English

Android Studio将ListView传递给另一个活动

[英]Android studio pass ListView to another activity

I am trying to pass an array list to another activity but it seems that is not enough. 我正在尝试将数组列表传递给另一个活动,但这似乎还不够。 I searched all day to pass the array list with "intent" but with no success. 我整日搜索以“意图”通过数组列表,但没有成功。 I wrote a code for learning purposes. 我写了一个出于学习目的的代码。 How to pass the data and show the Arraylist in a second activity? 如何传递数据并在第二个活动中显示Arraylist?

The action button is btn_save. 操作按钮为btn_save。 If you want further details let me know. 如果您需要更多详细信息,请告诉我。

The code is in 代码在

MainActivity (first activity): MainActivity(第一个活动):

public class MainActivity extends AppCompatActivity {

    ArrayList<String> addArray = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText editTextOne = (EditText) findViewById(R.id.editTextOne);
        final EditText editTextTwo = (EditText) findViewById(R.id.editTextTwo);
        Button btn_showText = (Button) findViewById(R.id.buttonShow);
        final TextView textView = (TextView) findViewById(R.id.textResults);
        Button btn_refresh = (Button) findViewById(R.id.btn_refresh);
        Button btn_close = (Button) findViewById(R.id.btn_close);
        Button btn_save = (Button) findViewById(R.id.btn_save);
        final ListView showMe = (ListView) findViewById(R.id.list_items);

        btn_showText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String text = editTextOne.getText().toString();
                String textTwo = editTextTwo.getText().toString();

                if (text.length() == 0 || textTwo.length() == 0){
                    textView.setText("You must enter Name & Surname");
                }else {
                    textView.setText(Html.fromHtml(

                            "<font color=\"red\">"+ text +  "</font> " +
                                    "<font color=\"blue\"><b>" + textTwo + " </b></font>"));
                }
            }
        });
        btn_refresh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
                startActivity(getIntent());
            }
        });
        btn_close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
                System.exit(0);
            }
        });

        btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//              Context context = getApplicationContext();
//              CharSequence mytext = "Hahahaha";
//              int duration = Toast.LENGTH_SHORT;
//              Toast toast = Toast.makeText(context,mytext,duration);
//              toast.show();
                String text = editTextOne.getText().toString();
                String textTwo = editTextTwo.getText().toString();
                String getInput = text + textTwo;
                if (addArray.contains(getInput)){
                    Toast.makeText(getBaseContext(), "Item already Added!", Toast.LENGTH_LONG).show();
                }
                else if (getInput == null || getInput.trim().equals("")){
                    Toast.makeText(getBaseContext(), "Input field is empty", Toast.LENGTH_LONG).show();
                }
                else{
                    addArray.add(getInput);
                    ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray);
                    showMe.setAdapter(adapter);
                    Intent intent = new Intent(MainActivity.this, ListOfNames.class);

                    ((EditText)findViewById(R.id.editTextOne)).setText(" ");
                    ((EditText)findViewById(R.id.editTextTwo)).setText(" ");
                }
            }
        });


    }

    public void onButtonClick(View v){

        if (v.getId() == R.id.btn_list){
            Intent i = new Intent(MainActivity.this, ListOfNames.class);
            startActivity(i);
        }

    }

}

ListOfNames second activity: (almost empty) ListOfNames第二个活动:(几乎为空)

public class ListOfNames extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_screen);

    }
}

If you are trying to pass a arraylist of string then it will be easy. 如果您尝试传递一个字符串数组列表,则将很容易。 Just pass arraylist with intent like this: 只需这样传递意图的arraylist即可:

ArrayList<String> list = new ArrayList<String>();  
Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
intent.putStringArrayListExtra("key", list);
startActivity(intent);

And receive it in ActivityTwo like this: 并在ActivityTwo中接收它,如下所示:

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

I found a temporary solution for this (The app is not broke). 我为此找到了一个临时解决方案(该应用程序未损坏)。 The only problem is the arraylist didn't increased. 唯一的问题是arraylist没有增加。 It contains and show only the last value. 它包含并仅显示最后一个值。

Main Activity: 主要活动:

...

else{
//  addArray.add(getInput);
//  ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray);
//                    showMe.setAdapter(adapter);
    Intent intent = new Intent(MainActivity.this, ListOfNames.class);
    intent.putExtra("data", getInput);
    startActivity(intent);

//  ((EditText)findViewById(R.id.editTextOne)).setText(" ");
//  ((EditText)findViewById(R.id.editTextTwo)).setText(" ");
                }
...

ListOfNames (Second Activity): ListOfNames(第二个活动):

public class ListOfNames extends Activity {
    ArrayList<String> addArrayT = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_screen);

        Bundle bundle = getIntent().getExtras();
        String data = bundle.getString("data");
        Button btn_more = (Button) findViewById(R.id.btn_more);

        ListView showMe = (ListView) findViewById(R.id.list_items);
        addArrayT.add(data);
        ArrayAdapter<String> adapterT = new ArrayAdapter<>(ListOfNames.this, android.R.layout.simple_list_item_1, addArrayT);
        showMe.setAdapter(adapterT);

    }
    public void onClickMore(View v){

        if (v.getId() == R.id.btn_more){
            Intent i = new Intent(ListOfNames.this, MainActivity.class);
            startActivity(i);
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 字符串数组传递给另一个活动 - android studio - String array pass to another activity - android studio 如何将用户名传递给 Android Studio 中的另一个活动 - How do I pass an Username to another Activity in Android Studio 如何在Android Studio中将堆栈从一个活动传递到另一个活动 - How to pass a stack from one activity to another in android studio 如何将URL图像传递到另一个活动的Android Studio - How to Pass URL Image to another activity Android studio 如何将文本从一个活动传递到另一个活动(android studio) - How to pass text from one activity to another activty (android studio) 将listview中的整数传递给另一个活动 - pass integer from listview to another activity 将 ListView 值传递给另一个 Activity 中的多个 EditText - Pass ListView values to multiple EditText in another Activity 在android studio中使用意图将数据从主活动传递到另一个活动 - Pass data from the main activity to another activity using intent in android studio 使用Android Studio中的Java代码将XML资源从一个活动传递到另一个活动? - Pass a XML resource from one activity to another activity using java code in Android Studio? Android将值传递给另一个活动 - Android Pass value to another activity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM