Tag: listview

在Android的ArrayAdapter创build简单的ListView

我试图在Android中创build一个Activity ,这个Activity只包含一个ListView 。 正如我所知要填充列表视图,我们需要使用ArrayAdapter 。 所以要了解ArrayAdapter我已阅读以下链接: http://developer.android.com/reference/android/widget/ArrayAdapter.html 但是我仍然无法清楚地理解它! 最大的疑问之一是为什么构造函数需要一个TextView资源ID,而我的活动没有任何TextViews,我应该给它? 我不是说这是唯一的构造函数,但是我想解释的是我无法理解它。 为了创build一个简单的listview,我还提到了下面的链接: 简单的ListView使用ArrayAdapter的例子。 但我的主要疑虑是为什么它需要一个TextView资源ID? 如果有人可以用例子来解释,这将是非常有帮助的。 编辑: ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);

如何在Android的ListView中处理点击事件?

以下是我的testing代码创build列表视图,列表视图显示成功,但是,在点击事件中有错误。 我想创build一个意图发送硬编码信息到一个新的活动。 但是,它显示错误的行 Intent intent = new Intent(context, SendMessage.class); 所以,问题是,我应该为这个class级提供什么? 此外,而不是硬编码的输出消息,如何捕获列表视图行中的数据,并传递给新的活动? 例如第一行的BBB,AAA,R.drawable.tab1_hdpi 。 谢谢。 public class MainActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.ListViewTest.MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList<ListEntry> members = new ArrayList<ListEntry>(); members.add(new ListEntry("BBB","AAA",R.drawable.tab1_hdpi)); members.add(new ListEntry("ccc","ddd",R.drawable.tab2_hdpi)); members.add(new ListEntry("assa","cxv",R.drawable.tab3_hdpi)); members.add(new ListEntry("BcxsadvBB","AcxdxvAA")); members.add(new ListEntry("BcxvadsBB","AcxzvAA")); members.add(new ListEntry("BcxvBB","AcxvAA")); members.add(new ListEntry("BvBB","AcxsvAA")); members.add(new […]

Android如何在一个活动中一个接一个地显示2个列表视图

我已经使用这个代码来显示两个列表视图。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="#f00" > </ListView> <ListView android:id="@+id/listView2" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="#0f0" > </ListView> 问题是,这导致2个列表视图占据屏幕的一半。 我正在添加一个头像这样的列表。 LevelAdapter adapter = new LevelAdapter(getActivity(), R.layout.list_item, weather_data); View header = inflater.inflate(R.layout.header2, null); View header2 = inflater.inflate(R.layout.header, null); lv1.addHeaderView(header); lv2.addHeaderView(header2); lv1.setAdapter(adapter); lv2.setAdapter(adapter); 我想在第一个列表结束之后出现第二个列表的标题。 我如何做到这一点?我如何使列表视图出现,以便第一个开始时,第一个结束? 谢谢

ListView getChildAt为可见的子项返回null

我从listview / getChildAt方法得到一些奇怪的行为。 我有一个HashSet iconsToUpdate,在数据库中已被更改的图标。 我想遍历可见的行,看看是否有任何图标需要更新,以反映新的图标。 我不需要testing当前不在视图中的图标,因为它们在渲染时将被正确绘制。 我的问题是,当它看起来不应该getChildAt返回null。 我知道getChildAt只能返回当前可见的视图,但是对于某些可见行,它返回null。 这是我的代码遍历可见的行: Logger.debug("First visible index: " + f_listView.getFirstVisiblePosition()); Logger.debug("Last visible index: " + f_listView.getLastVisiblePosition()); for (int i = f_listView.getFirstVisiblePosition(); i <= f_listView.getLastVisiblePosition(); i++) { String tag = "asdf"; // Remove when bug is fixed. if (f_listView == null) { Logger.debug("f_listView is null"); } else if (f_listView.getChildAt(i) == […]

实现onScrollListener来检测ListView中的滚动结束

我有一个ListView显示一些项目。 我想对当前显示在ListView的可见部分中的项目执行一些操作,具体取决于ListView如何滚动; 因此我想实现ListView的OnScrollListener 。 根据Android API参考,onScroll方法“将在滚动完成后调用”。 这在我看来是正确的,因为一旦滚动完成,我在ListView上执行我的操作(onScroll方法返回显示的第一个项目的索引和显示的项目数)。 但是一旦实现,我从LogCat中看到onScroll方法不仅在滚动完成后触发,而且从滚动的开始到结束,每进入一个显示视图的新项目都会触发onScroll方法。 这不是我所期望的行为,也不是我所需要的。 监听器的另一种方法(onScrollStateChanged)不提供有关当前在ListView显示的项目的信息。 那么,有没有人知道如何使用这几个方法来检测滚动的结尾,并获得有关显示项目的信息? API参考和方法的实际行为之间的不一致让我困惑了一下。 提前致谢。 PS:我已经看到了一些类似的话题,但没有任何帮助我理解整个事情是如何工作的。

滚动时背景ListView变黑

我创build了一个特定的列表,它存在于以下元素之外,用于创build一个滚动列表,每行包含一个左侧的图像和右侧的一些文本: 要开始“根”布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#C8C8C8" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"/> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" android:divider="#C8C8C8" android:background="#C8C8C8"/> </LinearLayout> 然后在ListView中放置下面的“行”项: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/bg_row" > <ImageView android:layout_width="wrap_content" android:paddingLeft="10px" android:paddingRight="15px" android:paddingTop="5px" android:paddingBottom="5px" android:layout_height="wrap_content" android:src="@drawable/bg_image" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="5px" android:paddingBottom="5px" android:textSize="16sp" android:textColor="#000000" android:layout_gravity="center" android:maxHeight="50px"/> </LinearLayout> 只要屏幕静态显示(如不移动),它将被正确显示,但是当我开始滚动列表时,行项目的背景(可以显示在代码中的“图标”)将是显示正确,但“根”布局的背景将变成完全黑色的…当滚动停止背景将大部分时间,取回它的颜色…正如我testing我还添加了一个TextView的根,元素具有相同的背景,这一个将扣留它的颜色时滚动列表…任何想法,为什么发生这种情况,以及如何解决这个问题?

Androidcheckboxlistview全选(禁用/启用)

我想禁用/启用列表视图中的所有checkbox。 事实上通过点击顶部的checkbox来获得select所有的行为。 谢谢

Android ListView文本颜色

我想将ListView textColor设置为黑色,因为我使用的是白色背景。 这是我的MailActivity public class MailActivity extends ListActivity { String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mails); setListAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, listItems)); } } 和我的XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF"> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Empty set" android:textColor="#000000" /> </LinearLayout> […]

ListView子对象可点击的confilct

在问了一个问题并花了15天解决这个问题之后,我又在这里寻找帮助和解决方法。 在MainActivity中,我创build了Json Downloading Task,它从http下载数据,并使用CustomListAdapter.class填充listview。 一切正常。 现在,在列表视图中,我有两个textview的,我想点击,其中之一是“接受”,textview只是在XML它没有填充适配器或JSON。 “接受”应该像这样工作“改变文本接受和改变颜色”,其工作就像一切。 但是当我点击第一个“接受”(位置0)在列表视图它改变其他列表视图项目(位置4,9)。 这就像我点击位置4,9的文字。 第一个图像是在点击“接受”之前,第二个是点击。 /// public class MainActivity extends Activity { protected static final String TAG = null; public ArrayList<FeedItem> feedList; public ListView feedListView; private ProgressBar progressbar; private CustomListAdapter adap; private LayoutInflater mInflater; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); feedListView= (ListView) findViewById(R.id.custom_list); mInflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE); String […]

我怎样才能让我的ArrayAdapter遵循ViewHolder模式?

这是我的ArrayAdapter。 我想通过遵循ViewHolder模式来提高效率: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html 但不知道如何做到这一点。 更新:ViewHolder模式 private class QuoteAdapter extends ArrayAdapter<Quote> { private ArrayList<Quote> items; // used to keep selected position in ListView private int selectedPos = -1; // init value for not-selected public QuoteAdapter(Context context, int textViewResourceId, ArrayList<Quote> items) { super(context, textViewResourceId, items); this.items = items; } public void setSelectedPosition(int pos) { selectedPos = pos; […]