繁体   English   中英

Android在按钮上单击创建ListView

Android Create ListView on button click

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试创建搜索活动。 布局包含EditText (用于键入搜索查询) ButtonListView (用于显示搜索结果)。 search_layout.xml(用于显示searchbox和ListView )如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/editText_search"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="@string/search_practice" />

         <Button 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/button_search"
             android:onClick="searchPractice" />

    </LinearLayout>

     <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ListView 
            android:id="@+id/praclist"
            android:layout_weight="1"
            android:layout_width="fill_parent"            
            android:layout_height="fill_parent" />

    </LinearLayout>

</LinearLayout>

列表项list_items.xml的布局为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">  
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <!-- Name Label -->
        <TextView
            android:id="@+id/name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#43bd00"
            android:textSize="16sp"
            android:textStyle="bold"
            android:paddingTop="6dip"
            android:paddingBottom="2dip" />
        <!-- Description label -->
        <TextView
            android:id="@+id/city"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#acacac"
            android:paddingBottom="2dip">
        </TextView>
        <TextView
            android:id="@+id/email"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#acacac"
            android:paddingBottom="2dip">
        </TextView>
        <!-- Linear layout for cost and price Cost: Rs.100 -->
        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <!-- Cost Label -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#5d5d5d"
            android:gravity="left"
            android:textStyle="bold"
            android:text="Phone: " >
        </TextView>
        <!-- Price Label -->
        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#acacac" 
            android:textStyle="bold"
            android:gravity="left">
        </TextView>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

在按钮单击(searchBtnClick)时,我正在调用doMySearch方法:

public void searchBtnClick(View view){
  -------
  ------
  ListAdapter adapter = doSearch(query);
  ListView pracListView = (ListView) findViewById(R.id.praclist);
  PracListView.setAdapter(adapter);
  return;
}

private ListAdapter doSearch(String query){
    ListAdapter adapter = null;
String url = "https://mywebservice.com/apps/api/v1/search/practices?val="+query+"&by=nam";

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(url);
String jsonResponsse = null;


try{
    HttpResponse httpResponse = httpClient.execute(httpGet, localContext);
    HttpEntity httpEntity = httpResponse.getEntity();
    jsonResponsse = getASCIIContentFromEntity(httpEntity);          
    Gson gson = new Gson();
    PracticesByName practicesByName = gson.fromJson(jsonResponsse,PracticesByName.class);
    ArrayList<Practices> practiceList = (ArrayList<Practices>)practicesByName.getPractices();
    for(int i=0 ; i < practiceList.size() ; i ++){   
        Object a = practiceList.get(i);
        System.out.println(a.getClass() + "   " + a.toString());
        Practices aPractice = practiceList.get(i);
        HashMap<String, String> aMap = new HashMap<String, String>();
        aMap.put(TAG_NAME, aPractice.getName());
        aMap.put(TAG_CITY, aPractice.getCity());
        aMap.put(TAG_EMAIL, aPractice.getEmail());
        aMap.put(TAG_PHONE, aPractice.getPhone());


        searchResultList.add(aMap);


    }


    adapter = new SimpleAdapter(this, searchResultList,
            R.layout.list_item_prac_search,
            new String[] { TAG_NAME, TAG_CITY, TAG_EMAIL, TAG_PHONE}, new int[] {
                    R.id.name, R.id.city, R.id.email, R.id.phone});
    //pracListView.setAdapter(adapter);


}catch (Exception e){
        System.out.println("Exception while getting serach for practice");
        e.printStackTrace();
}

return adapter;

}

该代码运行良好。 我正在从Web服务获取搜索结果。 但是下面没有任何列表。 知道我搞砸了吗?

2 个回复

您首先应该创建一个数组lis来从查询中获取记录,

ArrayList<String> items = new ArrayList<String>();
        items.add(doSearch(query));

然后替换这条线,

ListAdapter adapter = doSearch(query);

用这条线,

ArrayAdapter<String> adapter= new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,items);
ListView pracListView = (ListView) findViewById(R.id.praclist);
  PracListView.setAdapter(adapter);

最后,它可以正常工作了。 如下更正了search_layout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/editText_search"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="@string/search_practice"
            android:imeOptions="actionDone" />

         <Button 
             android:layout_width="wrap_content"
             android:layout_height="fill_parent"
             android:text="@string/button_search"
             android:onClick="searchPractice" />         
    </LinearLayout>

    <ListView 
            android:id="@+id/praclist"
            android:layout_weight="1"
            android:layout_width="match_parent"            
            android:layout_height="wrap_content" />

</LinearLayout>

使外部布局垂直并放置水平布局(其中包含EditText和Search Button)并在其中放置ListView。

谢谢你的时间。

2 ANDROID-ListView出现在按钮单击上

我想在一个片段上创建一个ListView。 该ListView必须是“隐藏”的,并且仅在我按一下按钮时才出现。 附上我需要知道的图片。 如果单击中心按钮(箭头按钮),则会从底部显示一个ListView。 如果再次单击箭头按钮,ListView将再次隐藏。 ...

3 在按钮单击上隐藏ListView

我的ASP.NET 4.5 WebForms应用程序有一个。 在它上面,我有一个LinkBut​​ton来显示/隐藏LinkView。 但是,如何不仅改变ListView的Visible状态,它总是可见的。 这是我的代码: 在后面的代码中,我在PAge中有一个名为ShowFloor ...

4 在按钮上切换ListView内容单击

在主要活动中,我正在显示从sqlite数据库填充的列表视图。 我希望在按交换视图图标时按字母顺序或数字顺序对列表进行切换。 我曾尝试做这样的事情,但是后来我发现,字符串只能被分配一次,此后是不可更改的。 这是我下面的要点。 有没有更标准的方法来实现此功能? 谢谢 ...

6 如何在按钮单击时动态删除ListView中的项目?

我正在开发一个应用程序,它需要在按钮事件中从ListView删除项目。 我试图从ArrayList删除它并创建整个新适配器并再次加载列表。 由于我的列表很大,这样做会影响我的应用程序的性能。 所以我想知道是否还有其他方法可以动态删除列表中的项目。 编辑:我试过你说的话。 当 ...

7 如何在按钮单击上创建布局

我想在单击按钮时创建一个新布局,并使用一些脚本使该新布局与xml文件中的现有布局完全一样。 我的问题不是创建基本布局,而是使其看起来像“资源”布局。 在此先感谢您的帮助 :) ...

8 如何在按钮单击上创建元素?

我想在单击按钮时动态创建一个元素。 是否必须为此使用ng-click或指令? 这是我正在尝试使用jQuery实现的JSFIDDLE : HTML: JS: 另外,如果您想要一个angularjs解决方案,这是到目前为止我有的基本JSFIDDLE 。 警告: ...

9 在按钮单击上动态创建会话

实际上,我已经创建了一个会话对象,并且在该会话中存储了多个文本框,单选框和复选框值。 这是我的代码(“我的插入”页面,我将在其中插入值并存储在会话中)。 我只是想知道,每当我单击“注册”按钮时,有什么方法可以创建新会话,即,我不想覆盖现有会话,但是在每次单击按钮时,我都想自动创建新 ...

10 尝试更新按钮上的ListView数据单击android

我正在尝试在ListView中单击按钮时更新ListView数据,但是出现以下错误: 我正在尝试在ListView中单击按钮时更新TextView值,但问题是有时它会更新正确的TextView,有时会在同一ListView中更新错误的TextView。有关此问题的任何帮助将不胜感激。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM