android - ListView 中的 "Separator"

标签 android android-layout listview android-listview

我正在使用 AsynTask 在 json ListView 中显示数据。

代码在这里。

public class MenuTask extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... arg0) {
        // TODO Auto-generated method stub
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        // Getting JSON String from URL..............
        JSONObject jsonObject = jParser.makeHttpRequest(
                "http://smartaway.dk/json/submenu.php?resid=" + res_id,
                "POST", params);
        try {
            bestdeal = jsonObject.getJSONArray(TAG_MENU);

            // / LOOping through AllEvents........
            for (int i = 0; i < bestdeal.length(); i++) {
                JSONObject e = bestdeal.getJSONObject(i);
                String resname = e.getString(TAG_MENUNAME);
                String city_state = e.getString(TAG_PRICE);

                // Creating New HAsh Map.........
                HashMap<String, String> map = new HashMap<String, String>();
                // adding each child node to HashMap key => value
                // map.put(TAG_ID, id);
                map.put(TAG_MENUNAME, resname);
                map.put(TAG_PRICE, city_state);
                /*
                 * map.put(TAG_STREET, street); map.put(TAG_COUSINE,
                 * cousine); map.put(TAG_RES_LOGO, reslogo);
                 */
                // adding HashList to ArrayList
                bestdeal_list.add(map);
            }
            // }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    @SuppressWarnings("deprecation")
    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);

        /*
         * if(bestdeal_list.isEmpty()){ AlertDialog alertDialog=new
         * AlertDialog.Builder(getParent()).create();
         * alertDialog.setTitle("No Best Deal Found");
         * alertDialog.setButton("Ok", new DialogInterface.OnClickListener()
         * {
         * 
         * @Override public void onClick(DialogInterface dialog, int which)
         * {
         * 
         * 
         * } }); alertDialog.show(); } else{
         */
        /*
         * if (bestdeal_list.isEmpty()) {
         * Toast.makeText(getApplicationContext(), "Empty Menu",
         * Toast.LENGTH_LONG).show(); } else{
         */
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                ListAdapter adapter = new SimpleAdapter(
                        RestaurantDetails.this, bestdeal_list,
                        R.layout.menu_list, new String[] { TAG_MENUNAME,
                                TAG_PRICE }, new int[] { R.id.textView1,
                                R.id.textView3 });
                list.setAdapter(adapter);

            }
        });
    }
    // }
}

一切正常,但我想通过将 ListView 分成多个部分来修改我的代码。我想要类别 1 下的前 4 个列表项和类别 2 下的其他 4 个列表项。我不想要可扩展的 ListView 。只想修改上面提到的代码。

最佳答案

  1. onPostExecute 正在主(“UI”)线程上调用,因此实际上没有必要通过 runOnUiThread(Runnable) 运行其代码。
  2. 如果你想在同一个 ListView 中显示两种类型的 View ,你需要修改你的 Adapter 来提供它(参见 Adapter.getViewTypeCount() ),那么您需要对数据集进行排序(在您的示例中为 List),以便它反射(reflect)您请求的排序 + 部分,最后您需要在适配器中处理它(按给定位置返回适当的类型/ View )。 另请参阅 Adapter.getItemViewType()Adapter.getView()

关于android - ListView 中的 "Separator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788520/

相关文章:

android - 从谷歌搜索或语音输入开始 Activity

android - 如何在 WebView 中显示 Android Action Bar

android - Snackbar 和 FloatingActionButton 错误

android - 如何让 textView 准确地包裹它的多行内容?

java - Json 不显示 url 数据

java - 如何自动选择所选项目上方的所有项目

java - 安卓 P : Service behavior changes

android - 使用 CalendarContract.Instances 查询 "all_day"事件导致时区错误

java - Android Studio ListView 复选框保存

java - Android 启动时崩溃 - MediaButtonReceiver 可能不为空