我正在尝试使用PullToRefreshListView而不是我的标准ListView但是,它作为初学者并不适合我,listView使用适配器并将xml项目文件放入listview,
当我用我的listview替换
</com.handmark.pulltorefresh.library.PullToRefreshListView>
列表视图变空,没有加载任何项目
当我将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>
公共类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() {
答案 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; - 如果没有,则不会显示任何元素