2014-02-10 70 views
0

我已经创建了一个能够将数组内容放入listview的函数,以下是我迄今的进度。按钮第一次按期间使用数组填充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> 

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

任何帮助或建议将被提前感谢接受谢谢。


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

+0

填充您的ListView与'ArrayAdapter'并设置'sampleContent'作为列表适配器以便它知道什么补与listview。奇怪的android代码btw –

回答

1

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

像: Android的活动,活动 布局Android的生命周期(如何添加上的活动按钮,然后回应一个点击等),在Android和Android小工具不同的现有布局(如列表视图为例)

当然还有很多需要阅读的内容,但它是一个很好的开始。

但是我会为您提供的代码,会做什么你所要求的,我会尽量解释,就像我可以

,首先你需要创建其他的活动,该活动的里面的布置插入一个列表视图

<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); 

    } 


} 

资源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 

>

希望这将有助于

+0

我得到了一个x图标,包含这两行代码“findViewById(R.id.listView);”和“getStringArray(R。array.listArray);“说不能解决或不是字段,我应该设置什么样的快速修复程序? –

+0

首先告诉我你在使用什么IDE,只是为了清楚我们正在谈论android正确吗?如果你喜欢我可以发布整个源代码 – murielK

+0

我认为我正在使用jquery-mobile。我刚开始学习这个,因为我从来没有碰过java代码或xml,我应该用jquery-mobile取代android.I混淆了我很抱歉 –

1

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

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

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

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

为了更好地使用jQuery Mobile的编码结构的代码是这样的:

采取的onclick出锚标记,并添加一个id:

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

在脚本TA克,处理主页上pagecreate,并在其处理锚的单击事件:

$(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'); 
    }); 
});