【问题标题】:How to return the id of selected item of listview如何返回列表视图选定项的id
【发布时间】:2016-03-02 14:53:30
【问题描述】:

你好朋友,我是 android 新手,我正在学习 android 编程。我正在和我的朋友一起工作。我有网络服务,我现在正在列表视图中显示城市列表这样做。

public class CityNameActivity extends ListActivity{
private TextView displayText;
ListView list;



private ProgressDialog pDialog;
// URL to get Cities JSON
private static String url = "http://14.140.200.186/Hospital/get_city.php";
// JSON Node names
private static final String TAG_CITIES = "Cities";
private static final String TAG_ID = "city_id";
private static final String TAG_NAME = "city_name";
// Cities JSONArray
JSONArray Cities = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> citylist;

//ArrayList<String> citylist;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cityname_activity_main);

    ListView listView=getListView();

    citylist = new ArrayList<HashMap<String, String>>();

          new GetCities().execute();
}



/**
 * Async task class to get json by making HTTP call
 * */
private class GetCities extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(CityNameActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) {
            try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                Cities = jsonObj.getJSONArray(TAG_CITIES);

                // looping through All Cities
                for (int i = 0; i < Cities.length(); i++) {
                    JSONObject c = Cities.getJSONObject(i);

                    String id = c.getString(TAG_ID);
                    String name = c.getString(TAG_NAME);
                    HashMap<String, String> Cities = new HashMap<String, String>();

                    Cities.put(TAG_ID, id);

                    Cities.put(TAG_NAME, name);



                    // adding contact to Cities list
                    citylist.add(Cities);


                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result)
    {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();
        /**`enter code here`
         * Updating parsed JSON data into ListView
         * */
        final ListAdapter adapter = new SimpleAdapter(CityNameActivity.this, citylist, R.layout.city_list_item, new String[] { TAG_NAME}, new int[] { R.id.name});
        setListAdapter(adapter);





    }
}}

cityname_mai_activity.xml

    <ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView4" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Select City"
    android:id="@+id/textView4"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textSize="25dp"/>

city_list_item:

<TextView
    android:id="@+id/name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="2dip"
    android:paddingTop="6dip"
    android:textSize="16sp"
    android:textStyle="bold" />

【问题讨论】:

  • 请帮助我正在等待任何回复
  • 您需要在 RecyclerView 项目布局中添加 clickListener。在那里您可以获取您在适配器中传递的信息。

标签: android spinner


【解决方案1】:

你必须像下面这样使用Spinner

    Spinner spin = (Spinner) findViewById(R.id.spinner);  


    spin.setOnItemSelectedListener(this);

    ArrayAdapter aa = new ArrayAdapter(this,R.layout.spinner_item,ARRAYLIST_DATA_HERE);  
    aa.setDropDownViewResource(R.layout.spinner_item); 

    //Setting the ArrayAdapter data on the Spinner  
    spin.setAdapter(aa); 

    spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

               String items=spinner.getSelectedItem().toString();
               Log.i("Selected item : ",items);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }

    });
    return true;

使用 spinner_item xml

xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerDropDownItemStyle"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#BAB7BA"
    android:ellipsize="start"
    android:gravity="left"
    android:padding="10dip"
    android:textColor="@color/white" />

【讨论】:

  • @Tom ...我能够在您的代码中实现上述代码..我想要那个,首先您应该尝试...如果您在那之后遇到任何问题,我将能够来帮助你..
  • 哦抱歉我不在这里只是我来试试你的建议抱歉。我想知道你在吗?
  • ArrayAdapter aa = new ArrayAdapter(this,R.layout.city_list_item,citylist);在这一行中,我收到了无法解析构造函数的错误,并且在这一行中 spin.setAdapter(aa);旋转无法解决
  • 我写了这个 ArrayAdapter aa = new ArrayAdapter(this,R.layout.city_list_item,citylist); aa.setDropDownViewResource(R.layout.city_list_item); //设置Spinner上的ArrayAdapter数据 spin.setAdapter(aa);
  • 我试过这个 listAdapter = new ArrayAdapter(getActivity(),R.layout.city_list_item,citylist);但现在 getActivity 无法解决
【解决方案2】:

您检查On Click Listener 是否为您的ListView ?我认为这将解决您的问题。在ItemClick 事件上使用onClikcListener's,这将为您提供位置,并且基于该位置,您可以从Arraylist 中获取项目,这将为您提供id。 p>

【讨论】:

  • 我试过了,但它在 toast 中显示我的 id 但我想发送我朋友的桌子
  • listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { Map tempHashmap = ( Map) parent.getItemAtPosition(position); String tagName = tempHashmap.get(TAG_NAME); System.out.println("tagname" + tagName); String tagId = (String)cityListWithId.get(tagName); System.out.println("tagId" + tagId); // Toast.makeText(CityNameActivity.this, tagId,Toast.LENGTH_SHORT).show(); } });
  • 您提供了书面的 toast 代码,这就是它向您展示 toast 的原因。顺便说一句,朋友表是什么
  • 我不想显示我已经在朋友表中评论了这个,现在有两列 city_name 和 city_id 现在他希望当我点击 ctiyname 时该城市的 id 应该显示在 city_id列
  • 试试 citylist.get(position);而不是 parent.getItemAtPosition(position);
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2018-01-30
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多