Android,Unable通过传递编辑文本值来检索另一个类的ArrayList值

时间:2018-01-25 07:22:28

标签: java android arraylist

嗨,我是Android编程的初学者..

Here is the output I needed

如果我在编辑文本字段中输入字母“A”,它必须在Button onClick上的另一个类中显示相应的ArrayList。

我在这里搜索了两天的答案..所以请不要将其标记为重复..

这是我的MainActivity.java文件

package com.dve.jok3r.arrayretrive;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

EditText enterLetter;
Button button1;
TextView arrayDisplay;

String getEnterLetter;

List<String> nameArrayMain;

ArrayMaker arrayMaker;


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

    enterLetter=(EditText) findViewById(R.id.enterLetter);
    button1=(Button) findViewById(R.id.button1);
    arrayDisplay=(TextView) findViewById(R.id.arrayDisplay);

    getEnterLetter=enterLetter.getText().toString();
    nameArrayMain= new ArrayList<>();

}

public void getArrayOnClick(View view) {

    arrayMaker=new ArrayMaker(getEnterLetter);

    nameArrayMain=arrayMaker.getNameArray();

    for (String object:nameArrayMain)
    {
        arrayDisplay.append(object+"\n");
    }


}
}

ArrayMaker.java

package com.dve.jok3r.arrayretrive;

import java.util.ArrayList;
import java.util.List;
public class ArrayMaker {

String getEnterLetter;

List<String> nameArray= new ArrayList<>();

public ArrayMaker(String getEnterLetter) {
    this.getEnterLetter = getEnterLetter;

    if (getEnterLetter.equals("A"))
    {
        nameArray.add("Arjun");
        nameArray.add("Anand");
        nameArray.add("Abhiram");
        nameArray.add("Aswin");
        nameArray.add("Abhishek");
        nameArray.add("Antony");

    }
    else if (getEnterLetter.equals("B"))
    {
        nameArray.add("Balu");
        nameArray.add("Balram");
        nameArray.add("Bheem");
        nameArray.add("Babu");
        nameArray.add("Basanth");
        nameArray.add("Boby");

    }
}

public List<String> getNameArray() {
    return nameArray;
}
}

当我将字符串直接传递给ArrayMaker类时,就像这样

arrayMaker=new ArrayMaker("A");

它返回Araray列表。 通过这种方式,我能够完全按照我的需要得到结果。

但是当我像这样传递编辑文本字符串时

getEnterLetter=enterLetter.getText().toString();
arrayMaker=new ArrayMaker(getEnterLetter);

它返回Nothing ......

我在这里做错了什么?

我应该使用共享偏好还是意图?

这是检索数组列表的正确方法吗?

提前致谢: - )

1 个答案:

答案 0 :(得分:0)

为了比较两个字符串,你不要在Java中使用'=='。你应该使用equals运算符。

以下是您更正的ArrayMaker类:​​

public class ArrayMaker {
    String getEnterLetter;
    List<String> nameArray = new ArrayList<>();

    public ArrayMaker(String getEnterLetter) {
        this.getEnterLetter = getEnterLetter;
        if (getEnterLetter.equals("A")) {
            nameArray.add("Arjun");
            nameArray.add("Anand");
            nameArray.add("Abhiram");
            nameArray.add("Aswin");
            nameArray.add("Abhishek");
            nameArray.add("Antony");
        } else if (getEnterLetter.equals("B")) {
            nameArray.add("Balu");
            nameArray.add("Balram");
            nameArray.add("Bheem");
            nameArray.add("Babu");
            nameArray.add("Basanth");
            nameArray.add("Boby");
        }
    }

    public List<String> getNameArray() {
        return nameArray;
    }
}

对于主要活动,请执行以下操作:

 public class MainActivity extends AppCompatActivity{

   private Button button;
   private EditText editText;
   private List<String> nameArrayMain;

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


    editText=findViewById(R.id.editText);
    button=findViewById(R.id.getArrayButton);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ArrayMaker a=new ArrayMaker(editText.getText().toString());
            nameArrayMain=new ArrayList<>(a.getNameArray());
                      }
    });

    }



    }