Android 从AutoCompleteTextView上的可单击项获取arraylist存储的id
因此,我的问题是,我需要获取存储在arrylist中的相应“id”字段,该字段对应于所选的AutoCompletTextView项,但我不能这样做。我将数据解析为json格式并将其存储在arraylist中,我想要的是单击autocompletetextview(已在工作)项的下拉列表,并获取相应的id Json数据: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
{"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