Articles of listview

为什么getView在SeparatedListAdapter上返回错误的convertView对象?

我根据我的需要改编了Jeff Sharkey的SeparatedListAdapter,得到了这样的结果: public class SeparatedListAdapter extends BaseAdapter { @SuppressWarnings(“unused”) private final String LOG_TAG = getClass().getSimpleName(); public final static int TYPE_SECTION_HEADER = 0; public final Map sectionAdapters; public final ArrayAdapter headerAdapter; public SeparatedListAdapter(ArrayAdapter headerAdapter) { super(); this.sectionAdapters = new LinkedHashMap(); this.headerAdapter = headerAdapter; } public void addSection(T section, Adapter adapter) { this.headerAdapter.add(section); this.sectionAdapters.put(section, adapter); } public […]

如何在Android ListView中设置所选项目的样式?

我是一个Android新手,试图学习UI方面的东西,它正在努力。这就是我现在所拥有的: breeds_listing.xml breeds_listing_item.xml list_item_background.xml 我正在努力弄清楚的是我如何设计所选项目的样式? 目前,所选项目具有可怕的橙色背景,在圆形绿色矩形下,呈现橙色轮廓效果。 我确信我没有按照最佳做法做事,所以任何建议或改进都将不胜感激。 非常感谢,D。

Android中onItemClick的“int”和“long”参数之间有什么区别?

当我们实现OnItemClickListener ,我们必须实现onItemClick方法,这是OnItemClickListener接口中的抽象方法。 在onItemClick方法中有四个参数。 public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Toast.makeText(this, “Clicked on : ” + arg2 + ” long arg : ” + arg3, Toast.LENGTH_LONG).show(); } 我需要知道的是最后两个参数之间的区别( int arg2, long arg3 )。 正如你在我的代码中看到的,当我尝试Toast ,我得到两个参数的相同值。

列表项目按钮不再可点击

我有一个列表项,里面有一个按钮。 显示按钮时,列表项不再可单击。 为了使其可以再次点击,我已用视图替换了该按钮。 问题是,当单击列表项时,该按钮会更改背景图像(就像单击它一样)。 如何避免这种不良行为? 谢谢

getLastVisiblePosition返回-1

我的ListView有问题(使用CursorAdapte r)。 当我调用getListView().getLastVisiblePosition()我收到-1 。 这是一个问题,因为我的列表中填充了项目。 此外, getListView().getFirstVisiblePosition()始终返回0,无论我在列表中滚动的位置。 有任何想法吗? 它与startManagingCursor有关 @Override public void changeCursor(Cursor cursor) { super.changeCursor(cursor); MyActivity.this.mCursor = cursor; //startManagingCursor(MyActivity.this.mCursor); } 如果我注释掉startManagingCursor,一切正常。 我还尝试在更改Cursor之前添加stopManagingCursor()并仍然stopManagingCursor()同样的问题。

在onCreateViewHolder中获得位置

我正在使用Support Library v7将ListView转换为RecyclerView。 我有两种不同的布局可以在RecyclerView加载。 在ListView ,我在getView()方法中获取项的位置,并能够为该行加载适当的布局。 但在RecyclerView , onCreateViewHolder没有position参数。 有没有其他方法来实现这一目标? PS:来自Google的收件箱应用程序在RecyclerView显示不同的布局(可能是)。 由于RecyclerView的性能改进,我认为他们可能没有使用过ListView @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View v=null; MyVO vo = voList.get(???POSITION???); switch(vo.getType()){ case TYPE_1: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout1, viewGroup, false); break; case TYPE_2: v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.layout2, viewGroup, false); break; } return new ViewHolder(v); }

如何在ListView中处理多个倒计时器?

我有一个listview(带有自定义列表适配器),我需要在每一行显示一个倒计时。 例如,如果我的列表包含4个项目,我将有4行。 此时,我需要处理4个不同的倒计时(每行一个),因为时间不同。 到目前为止,我正在通过以下方式处理它:在自定义列表适配器中,在getView()方法内部,我创建一个新的CountDownTimer并在TextView中显示剩余时间。 但问题是它会使活动减慢很多,我甚至无法在最坏的情况下正确滚动(因为每次显示一行时,它都会创建一个新的CountDownTimer)。 我搜索了很多更好的解决方案,但没有人满意。 是否有更清洁,更流畅的解决方案来处理listView中的多个倒计时器? 谢谢

listview addFooterView问题

我有内容我需要显示在我的列表视图上方和下方,如果您可以一起使用滚动视图和列表视图,滚动视图将非常好用。 既然那不是最好的解决方案,我一直试图做一些事情来添加页脚内容到我的列表视图, 这里下面的图片显示了当我添加不同types的行作为最后一行时会发生什么。 我无法获取我的内容来填充行的宽度 我有一些需要进入页脚的按钮。 我正在使用扩展BaseAdapter的自定义适配器。 我也尝试过使用addFooterView,但是如果你要实现自己的适配器,我会对如何使用addFooterView方法感到困惑。 任何人都有任何关于如何在自定义适配器上实现addFooterView的简单示例 要么 有没有办法让我可以在这个位置获得行(如图所示)以更好地显示,这里是我用来创建这个页脚行的代码 View v = getLayoutInflater().inflate(R.layout.item_listview_footer, null); LinearLayout ll = (LinearLayout) v.findViewById(R.id.ll); return ll; // return ll as convertView in getView function 编辑: 这是我的页脚布局的xml 这是样式/按钮的xml wrap_content fill_parent 17px bold sans center center 标准风格 wrap_content wrap_content

如果使用CursorAdapter,如何更新ListView?

我问的原因是因为不推荐使用requery() 。 现在刷新ListView的最佳方法是什么?

计算ListView中列表项的总数

如何计算ListView中列表项的总数? 我正在编写一个教会应用程序,其中我使用存储在SD卡中的图像填充列表,但现在我想计算列表项的总数。 // to upload whole list for(int position = 0; position < lstView.getAdapter().getCount(); position++) { flags.put(position, true); } ((BaseAdapter) lstView.getAdapter()).notifyDataSetChanged(); } }); /*** Get Images from SDCard ***/ listSDCardImages = fetchSDCardImages(); // ListView and imageAdapter lstView = (ListView) findViewById(R.id.listSDCardImages); lstView.setAdapter(new ListSDCardImagesAdapter(this)); Toast.makeText(getApplicationContext(), "Total number of Items are:" + String.valueOf(position), Toast.LENGTH_LONG).show(); } 每次我都0