使用数组填充listview内容

时间:2014-02-10 17:48:50

标签: arrays listview jquery-mobile

我创建了一个能够将数组内容放入listview的函数,这是我目前的进展。

<div id="MainPage" data-role="page" >

    <div data-role="content">

        <a href="#ViewPage" data-role="button" onClick="displayArray( )">RENAME</a>

    </div>

</div>

<div id="ViewPage" data-role="page" >

    <div data-role="content">
        <ul id="viewlist" data-role="listview" data-filter="true" data-filter-placeholder="Sample Contents" data-inset="true">
                 <!-- array contents goes here -->
        </ul>   
    </div>

</div>  

<script>

     var sampleContent = new Array( );

    displayArray( )
    {
        for(var scan=0; scan<sampleContent.length; detect++)
        {
             $('#viewlist').append('<li><a href="#">' + sampleContent[scan] + '</a></li>');
        }       
    }

</script>

我的代码在第一次按下按钮时工作,但是当我第二次按下它时,列表视图变得混乱。

提前感谢任何帮助或建议。


已编辑,我已经想出如何做到这一点,但我在第二次按下按钮时遇到了问题。

2 个答案:

答案 0 :(得分:1)

首先我不想粗鲁,但我认为你应该先开始阅读一些关于android的基础知识。

像:  Android活动,活动的生命周期  Android中的布局(如何在活动上添加按钮然后响应点击等),android和android小部件中的不同现有布局(例如listView)

当然还有很多东西需要阅读,但这是一个很好的开始方式。

但是,我将为您提供符合您要求的代码,我将尽力解释

首先,您需要创建其他活动,并在该活动的布局内插入listview

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

    <ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

然后其他活动的java代码将如下所示

public class MainActivity2 extends Activity {
    //create the array adapter that will input your array and convert it into a list of view  

    ArrayAdapter<String> arrayAdapter;

    String[] list;

    ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        listView = (ListView)findViewById(R.id.listView);
        // get the array from ressource and insert them on an array
        list =  getResources().getStringArray(R.array.listArray);

        // then create the arrayadpater with input your array of string if you dont get                     //anything here just read android documentation about arrayAdapter
        arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list );

        //then set the adapter to your listView
        listView.setAdapter(arrayAdapter);

    }


}

res xml文件

<resources>
    <string-array name="listArray">
        <item>Apple</item>
        <item>Banana</item>
        <item>Cherry</item>
        <item>Cranberry</item>
        <item>Grape</item>
        <item>Grape</item>
    </string-array>
</resources

&GT;

希望它会有所帮助

答案 1 :(得分:1)

添加完所有项目后,只需添加.listview('refresh')即可。

$('#viewlist').listview('refresh');

如果您想每次清空列表并重新填充,请在for循环之前调用.empty():

$('#viewlist').empty();

要使用更好的jquery移动编码,请按照以下方式构建代码:

从锚标记中取出onclick并添加一个id:

<a id="viewPageBtn" href="#ViewPage" data-role="button" >RENAME</a>

在您的脚本标记中,处理主页面上的pagecreate,并在其中处理锚点的click事件:

$(document).on("pagecreate", "#MainPage", function(){
    var sampleContent = ["item 1", "item 2", "item 3"];
    $("#viewPageBtn").on("click", function(){
        $('#viewlist').empty();
        for(var scan=0; scan < sampleContent.length; scan++)
        {
             $('#viewlist').append('<li><a href="#">' + sampleContent[scan] + '</a></li>').listview('refresh');
        }
        $('#viewlist').listview('refresh');
    });
});