PullToRefreshListView和getItemAtPosition

时间:2013-11-07 15:44:05

标签: android

我正在尝试使用PullToRefreshListView而不是我的标准ListView但是,它作为初学者并不适合我,listView使用适配器并将xml项目文件放入listview,

当我用我的listview替换

 </com.handmark.pulltorefresh.library.PullToRefreshListView>

列表视图变空,没有加载任何项目

  • onItemClickListener()

当我将ListView从ListView替换为PullToRefreshListView时,我没有得到getItemAtPosition选项,

那么如果我无法获得该职位,我如何添加一个onItemClickListener()?

  • list_fragment.xml

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical" >
    
           <com.handmark.pulltorefresh.library.PullToRefreshListView
                android:id="@+id/CarsList"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
    
        </LinearLayout>
    
    • 我的Activity.xml扩展了Activity

公共类MainActivity扩展Activity实现AsyncCallBack {

PullToRefreshListView           myList;
CustomList                      cl;

....

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myList = (PullToRefreshListView) findViewById(R.id.CarsList);
    ...

这是代码的一部分...... getApiJsonArray是一个在onPostExecute()

上被执行的监听器
@Override
public JSONArray getApiJsonArray(JSONArray results) {
    if (dialog != null) {
        dialog.dismiss();
    }
    ArrayList<CarsItems> carsItems;
    try {
        carsItems = getCarsList(results);
        cl = new CustomList(this, carsItems);
        myList.setAdapter(cl);
        myList.setOnItemClickListener(new OnItemClickListener() {

2 个答案:

答案 0 :(得分:2)

问题在于维度,fill_parent是问题,我检查它是否有效

默认情况下,将pulltorefresh代码复制并粘贴到项目中时,您会得到:

<com.markupartist.android.widget.PullToRefreshListView
     android:id="@+id/android:list"
     android:layout_height="fill_parent"
     android:layout_width="fill_parent"
/>

我犹豫是否要求stackoverflow上的某人因为我对导入它并更新支持版本感到沮丧......等等

但是,当您将代码直接复制到项目中时,您会得到一个空白列表或根本没有列表

只需将高度和宽度更改为match_parent等其他内容,对于像我这样的初学者来说,这应该是一个直接的答案。

如果你遇到问题没有在列表中找到setOnItemClickListener()方法的getItemAtPosition(),请尝试在该方法中调用它(setOnItemClickListener())

像那样

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
        Object item = a.getItemAtPosition(position);
        ..

希望这对像我这样的初学者有所帮助! :)

答案 1 :(得分:0)

尝试跟踪您的代码

Log.i("MyApp","Results = "+results.toString());
carsItems = getCarsList(results);
在适配器添加内部设置项目后,在CustomList内部

notifyDataSetChanged();&lt; - 如果没有,则不会显示任何元素