Android 从AutoCompleteTextView上的可单击项获取arraylist存储的id

Android 从AutoCompleteTextView上的可单击项获取arraylist存储的id,android,arraylist,autocompletetextview,Android,Arraylist,Autocompletetextview,因此,我的问题是,我需要获取存储在arrylist中的相应“id”字段,该字段对应于所选的AutoCompletTextView项,但我不能这样做。我将数据解析为json格式并将其存储在arraylist中,我想要的是单击autocompletetextview(已在工作)项的下拉列表,并获取相应的id Json数据: {"estab":[{"id":"00","design":"NULL"}, {"id":"01","design":"Continente de Viana do Castel

因此,我的问题是,我需要获取存储在arrylist中的相应“id”字段,该字段对应于所选的AutoCompletTextView项,但我不能这样做。我将数据解析为json格式并将其存储在arraylist中,我想要的是单击autocompletetextview(已在工作)项的下拉列表,并获取相应的id

Json数据:

{"estab":[{"id":"00","design":"NULL"},
{"id":"01","design":"Continente de Viana do Castelo"},
{"id":"02","design":"Pingo Doce Viana do Castelo"},
{"id":"03","design":"Pingo Doce - Portuzelo (Viana Castelo)"},
Arraylist获取和设置:

public class Estbs {

 private String id;

private String design;



 public String getID() {
 return id;
 }

public void setID(String id) {
this.id = id;
}

 public String getDesign() {
 return design;
 }

public void setDesign(String design) {
 this.design = design;
 } 
}

main/json函数

JSONArray jsonarray;
ProgressDialog mProgressDialog;
ArrayList<String> establist;
ArrayList<Estbs> estab;
 String x;



  private AutoCompleteTextView actv;



 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.add_linha);




 //Download JSON file AsyncTask
 new DownloadJSON().execute();

 }

//Download JSON file AsyncTask
private class DownloadJSON extends AsyncTask<Void, Void, Void> {

 @Override
protected Void doInBackground(Void... params) {
// Locate the WorldPopulation Class 
estab = new ArrayList<Estbs>();
// Create an array to populate the spinner 
establist = new ArrayList<String>();
// JSON file URL address
jsonobject = JSONfunctions
        .getJSONfromURL(url_donload_estbs);

try {
    // Locate the NodeList name
    jsonarray = jsonobject.getJSONArray("estab");
    for (int i = 0; i < jsonarray.length(); i++) {
        jsonobject = jsonarray.getJSONObject(i);

        Estbs estabs = new Estbs();
        estabs.setID(jsonobject.optString("id"));
        estabs.setDesign(jsonobject.optString("design"));
        estab.add(estabs);

        // Populate spinner with country names
        establist.add(jsonobject.optString("design"));

    }
} catch (Exception e) {
    Log.e("Error", e.getMessage());
    e.printStackTrace();
}
return null;
}

 @Override
 protected void onPostExecute(Void args) {
// Locate the spinner in activity_main.xml
actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);


// Spinner adapter
actv
        .setAdapter(new ArrayAdapter<String>(Newlin_ProductActivity.this,
                android.R.layout.simple_list_item_1,
                establist));

// Spinner on item click listener
actv
        .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0,
                    View arg1, int position, long arg3) {
                // TODO Auto-generated method stub
                // Locate the textviews in activity_main.xml
  TextView txtrank = (TextView) findViewById(R.id.design);

                // Set the text followed by the position 
                txtrank.setText("Rank : "
                        + estab.get(position).getID());

                x = estab.get(position).getID();

                Toast.makeText(getApplicationContext(), x,
                           Toast.LENGTH_LONG).show();

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub
            }
        });
}
 }
JSONArray-JSONArray;
进程对话框;
ArrayList establist;
ArrayList estab;
字符串x;
私有自动完成文本视图actv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.add_linha);
//下载JSON文件异步任务
新建下载JSON().execute();
}
//下载JSON文件异步任务
私有类下载JSON扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
//定位世界人口类别
estab=newarraylist();
//创建一个数组以填充微调器
establist=newarraylist();
//JSON文件URL地址
jsonobject=JSONfunctions
.getJSONfromURL(url\u donload\u estbs);
试一试{
//找到节点列表名称
jsonarray=jsonobject.getJSONArray(“estab”);
for(int i=0;i
简而言之,
onItemClicklistener()
完成了这项工作,但我建议您看看下面的代码,并尝试在日常编码中遵循这种做法

public class MainActivity extends Activity implements OnItemClickListener {

    private ArrayList<String> establist;
    private ArrayList<Estbs> estab;
    private AutoCompleteTextView autoCompleteTextView;
    private TextView txtRank;
    private int count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoComplete);
        autoCompleteTextView.setOnItemClickListener(this);
        txtRank = (TextView) findViewById(R.id.textView1);
        estab = new ArrayList<Estbs>();
        establist = new ArrayList<String>();
        new DownloadJSON().execute();
    }

    private class DownloadJSON extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            for (int i = 0; i < 10; i++) {
                fillDataInEstabs();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void args) {
            autoCompleteTextView.setAdapter(new ArrayAdapter<String>(
                    MainActivity.this, android.R.layout.simple_list_item_1,
                    establist));
        }
    }

    private void fillDataInEstabs() {
        Estbs e = new Estbs();
        e.setId(String.valueOf(count));
        e.setDesign("Hello " + String.valueOf(count));
        estab.add(e);
        establist.add(e.getDesign());
        count++;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long arg3) {
          String selection = (String) parent.getItemAtPosition(position);
          int actualPosition = estab.indexOf(selection);
          txtRank.setText("Rank : " + estab.get(actualPosition).getId());
          Toast.makeText(getApplicationContext(), estab.get(actualPosition).getId(),
                Toast.LENGTH_LONG).show();
    }
}
public类MainActivity扩展活动实现了mclickListener{
私人ArrayList establist;
私人ArrayList estab;
私有自动完成文本视图自动完成文本视图;
私有文本视图txtRank;
私有整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView=(autoCompleteTextView)findViewById(R.id.autoComplete);
setOnItemClickListener(这个);
txtRank=(TextView)findViewById(R.id.textView1);
estab=newarraylist();
establist=newarraylist();
新建下载JSON().execute();
}
私有类下载JSON扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
对于(int i=0;i<10;i++){
fillDataInEstabs();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void args){
autoCompleteTextView.setAdapter(新的ArrayAdapter(
MainActivity.this,android.R.layout.simple\u list\u item\u 1,
房地产经纪人);
}
}
私有void fillDataInEstabs(){
Estbs e=新Estbs();
e、 setId(String.valueOf(count));
e、 setDesign(“Hello”+String.valueOf(count));
b.添加(e);
添加(e.getDesign());
计数++;
}
@凌驾
公共单击(适配器视图arg0,视图arg1,内部位置,
长arg3){
字符串选择=(字符串)parent.getItemAtPosition(位置);
int actualPosition=estab.indexOf(选择);
setText(“Rank:+estab.get(actualPosition.getId());
Toast.makeText(getApplicationContext(),estab.get(actualPosition).getId(),
Toast.LENGTH_LONG).show();
}
}

简而言之,
onItemClicklistener()
完成了这项工作,但我建议您看看下面的代码,并尝试在日常编码中遵循这种做法

public class MainActivity extends Activity implements OnItemClickListener {

    private ArrayList<String> establist;
    private ArrayList<Estbs> estab;
    private AutoCompleteTextView autoCompleteTextView;
    private TextView txtRank;
    private int count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoComplete);
        autoCompleteTextView.setOnItemClickListener(this);
        txtRank = (TextView) findViewById(R.id.textView1);
        estab = new ArrayList<Estbs>();
        establist = new ArrayList<String>();
        new DownloadJSON().execute();
    }

    private class DownloadJSON extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            for (int i = 0; i < 10; i++) {
                fillDataInEstabs();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void args) {
            autoCompleteTextView.setAdapter(new ArrayAdapter<String>(
                    MainActivity.this, android.R.layout.simple_list_item_1,
                    establist));
        }
    }

    private void fillDataInEstabs() {
        Estbs e = new Estbs();
        e.setId(String.valueOf(count));
        e.setDesign("Hello " + String.valueOf(count));
        estab.add(e);
        establist.add(e.getDesign());
        count++;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long arg3) {
          String selection = (String) parent.getItemAtPosition(position);
          int actualPosition = estab.indexOf(selection);
          txtRank.setText("Rank : " + estab.get(actualPosition).getId());
          Toast.makeText(getApplicationContext(), estab.get(actualPosition).getId(),
                Toast.LENGTH_LONG).show();
    }
}
public类MainActivity扩展活动实现了mclickListener{
私人ArrayList establist;
私人ArrayList estab;
私有自动完成文本视图自动完成文本视图;
私有文本视图txtRank;
私有整数计数=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autoCompleteTextView=(autoCompleteTextView)findViewById(R.id.autoComplete);
setOnItemClickListener(这个);
txtRank=(TextView)findViewById(R.id.textView1);
estab=ne