Articles of listview

具有不同行高的ListView中的Android RelativeLayout fill_parent意外行为

我目前正在对项目进行小的更新,我在列表视图中遇到了Relative_Layout和fill_parent的问题。 我试图在每行的两个部分之间插入一个分隔符,就像默认拨号器的调用日志中的分隔符一样。 我检查了Android源代码,看看他们是如何做到的,但是在复制他们的解决方案时遇到了问题。 首先,这是我的行项目布局: 我面临的问题是每行都有一个不同高度的缩略图(ImageView01)。 如果我将RelativeLayout的layout_height属性设置为fill_parent,则分隔符不会垂直缩放以填充行(它只是一个1px点)。 如果我将layout_height设置为“?android:attr / listPreferredItemHeight”,则分隔符会填充该行,但缩略图会缩小。 我已经在适配器的getView()方法中做了一些调试,并且一旦行具有适当的高度,似乎没有正确设置分隔符的高度。 以下是getView()方法的一部分: public View getView(int position, View view, ViewGroup parent) { if (view == null) { view = inflater.inflate(R.layout.tag_list_item, parent, false); } 该方法的其余部分只是为行设置适当的文本和图像。 另外,我在适配器的构造函数中创建了inflater对象: inflater = LayoutInflater.from(context); 我错过了必不可少的东西吗 或者fill_parent不适用于动态高度?

检测滑动,单击,按住一个View Android

我有一个ImageView填充我的整个Activity 。 我需要能够检测到4个触摸事件: 保持(超过400毫秒) 点击 向左滑动 向右滑动 目前我可以使用以下代码检测前两个: imageView.setOnTouchListener(new View.OnTouchListener() { private Timer timerr = new Timer(); private long LONG_PRESS_TIMEOUT = 400; // TODO: your timeout here private boolean wasLong = false; @Override public boolean onTouch(View v, MotionEvent event) { Log.d(getClass().getName(), “touch event: ” + event.toString()); if (event.getAction() == MotionEvent.ACTION_DOWN) { // HOLD DETECTED timerr.schedule(new […]

Android – 自定义ListView适配器 – 多选择删除 – Indexoutofbounds – 为什么?

我有一个自定义Listview使用适配器类来扩展Item类的ArrayAdapter。 我可以在NONE,Single和Multi的选择模式之间切换。 一切正常。 我现在尝试实现的是一种在多选模式下从列表视图(和适配器)中删除多项选项的方法。 但是,在执行以下任一操作时,我会获得IndexOutOFBounds Exceptions; 1)在SINGLE选择模式下删除列表视图中的最后一项(注意:最后一项删除之前的任何内容确定)2)在多选选择模式中,我再次无法在多选模式中删除最后一项3)我可以删除之前的单个选定项目最后一项但是2次或更多次选择会再次导致索引越界错误。 我添加了调试日志来显示被删除的位置和getCheckItemPositions()的大小以及我的for循环计数器(例如i),最后是要删除的项目的项目标题。 如果我注释掉实际的listadpter.remove(position)行,那么日志输出似乎指示一切正常工作所以我现在怀疑问题属于我的适配器类getView方法。 但是我的大脑筋疲力尽,我被困住了。 MainActivity.class – 从按钮视图对象调用的removeItems方法; private void removeItems() { final SparseBooleanArray checkedItems = listView.getCheckedItemPositions(); //final long[] checkedItemIds = listView.getCheckedItemIds(); final int checkedItemsCount = checkedItems.size(); Log.d(“drp”, “Adapter Count is: ” + Integer.toString(mMyListViewAdapter.getCount())); if (checkedItems != null) { for (int i = checkedItemsCount-1; i >= 0 ; –i) { […]

在relativeLayout中依次添加几个textViews(可变宽度)

我有一个相对布局部分。 在其中,我必须以编程方式添加几个可以在宽度上变化的可点击文本视图。 我需要他们一个接一个地出现。 如果textView的宽度不能适合当前行的剩余空间,则它应该以类似的方式开始在行下方填充。 我需要这样的东西: 我到目前为止管理的是以下代码: public static void updateWordsListingOnUi(final ArrayList wordsList) { //TODO: incomplete and may be inefficient mUiHandler.post(new Runnable() { @Override public void run() { TextView textView; wordsListingContainer.removeAllViewsInLayout(); //TODO for (final String word : wordsList) { textView = new TextView(context); textView.setText(word); textView.setClickable(true); textView.setPadding(1,1,10,1); if (wordsList.indexOf(word)%2 == 0) { textView.setBackgroundColor(context.getResources().getColor(R.color.colorPrimary)); } else { textView.setBackgroundColor(context.getResources().getColor(R.color.colorAccent)); […]

ListView / ExpandableListView setEmptyView()无效

我正在尝试为三个列表视图设置空视图,即2个可扩展视图和一个列表视图,它们位于不同的选项卡中: LayoutInflater inflater = getLayoutInflater(); View emptyView = inflater.inflate(R.layout.empty_view, null, false); … ExpListView1.setEmptyView(emptyView); ListView.setEmptyView(emptyView); ExpListView2.setEmptyView(emptyView); 它没有效果 – 不显示空视图。 与该代码段相同: View emptyView = inflater.inflate(R.layout.empty_view, null, false); View emptyRelativeLayout = (RelativeLayout) emptyView.findViewById(R.id.empty_view_layout); ExpListView1.setEmptyView(emptyRelativeLayout); empty_view_layout.xml:

自定义适配器未在ListView上显示任何数据

我的listView需要一个自定义适配器。 它需要传递给ASyncTask,它将从RSS提要中获取一些数据,然后希望将该数据(当前标题和日期,两个字符串)设置为该行。 我想出的代码如下,但是它没有对适配器做任何事情。 MainActivity.java import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends Activity { private ListView listOne; private ListView listTwo; RssListViewAdapter adapterOne; RssListViewAdapter adapterTwo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rss_layout); //Connect all three columns to their ListViews listOne = (ListView) findViewById(R.id.listOne); listTwo = (ListView) findViewById(R.id.listTwo); //Create both adapaters //TODO: […]

ListView项目链接单击列表项目内按钮的行状态

如何链接列表项#101行中的“点击”与行#2中的单选按钮。 目前它是:点击该行将显示“焦点”hilight但不会触发单选按钮选择,单击RB将“检查”radiobutton但不会给出“hilight”效果。 但我想让它作为一个工作:“点击行将显示焦点并在RB上进行选择并点击RB将检查radiobutton和hilight行”。 有没有办法实现这个目标? 有了这个设置,我想我可以改变行,所以它是一个不包含radiobutton的radiobutton。 我有一个自定义ArrayAdapter来处理radiobutton点击(以及处理radiobutton的“组”)。 注射#1 注射#2 列表视图xml 行xml 我暂时做的是:我将RadioButton的clickable设置为false。 在ArrayAdapter中,而不是RB我在行视图上设置clickListener(基于视图types)。

如何使用自定义列表适配器显示listView为空

我有一个列表适配器类,填充列表视图。 但是如果我的列表由于某种原因是空的,它只是空白。 如何让它在列表中添加一个项目“list is empty”? 我可能会添加另一个项目,即为空项目制作不同的layotu文件,但我不知道如何使用两种types的视图? 这是我的列表适配器当前的代码: public class MyOrdersAdapter extends BaseAdapter { private GlobalObjects global; private Context mContext; private String TAG = “MyOrdersAdapter”; private boolean listIsEmpty = true; // Keep all Objects in array public ArrayList orders; /** * Constructor for creating a menu category * * @param c * the context of the […]

扩大listview中的中间元素 – android?

我试图放大中心最listview项目。 (最后,我希望将其扩展为一种简单明亮的3D效果,当屏幕中间的元素显示为放大,当它们位于下方时缩小,总黑色背景和文本项目放大和缩小…) 所以,我做了一个虚拟列表视图,每一行都是一个textview元素。 下面,我有一个自定义适配器。 我所做的唯一相关修改是: 在OnCreate() ,我将以下variables传递给适配器: int v = (listview.getLastVisiblePosition() – listview.getFirstVisiblePosition()) + 1; 在Adapter的getView()中,我得到了这个: if (position == x/2) { textView.setHeight(100); } 无论如何这里是所有的代码,我已经跳过了import:(它不是那么大!……大部分都是相当普遍的) MainActivity.java: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ListView listview = (ListView) findViewById(R.id.listview); String[] values = new String[] { “Android”, “iPhone”, “WindowsMobile”, “Blackberry”, […]

动态更改listview的分隔高度?

这个问题在这里被问到一个链接 另外我想澄清一下我在列表视图中有10个列表项的问题我希望每个列表项的deviderheight与第一个项不同,它应该是setDividerheight(2)for 2nd setDividerheight(4)就像这样.. 我制作了一个自定义Adapeter,我正在设置我的布局 public View getView(int position,View convertView,ViewGroup parent){View v = super.getView(position,convertView,parent); if(position ==2) { if (v != convertView && v != null) { ViewHolder holder = new ViewHolder(); // TextView tv = (TextView) v.findViewById(R.id.artist_albums_textview); // holder.albumsView = tv; convertView = mInflater.inflate(R.layout.jazz_artist_list_item, null); holder.albumsView = (TextView)convertView.findViewById(R.id.artist_albums_textview); // lv.setDividerHeight(8); v.setTag(holder); } } else { […]