Articles of android listview

Android:如果ListView的性能还不够,该怎么办?

好吧,这个主题已经并且仍然存在很多争论,我已经阅读了许多教程,提示并看到了有关它的讨论。 但是当我达到某些复杂的行时,我仍然遇到了为ListView实现自定义BaseAdapter的问题。 所以我基本上拥有的是我通过解析来自网络的xml获得的一些实体。 另外我获取一些图像等等,所有这些都是在AsyncTask中完成的。 我在getView()方法中使用性能优化的ViewHandler方法,并按照每个人的建议重用convertView。 即我希望我正在使用ListView,因为它只是显示一个ImageView和两个TextViews,它们使用SpannableStringBuilder设置样式(我不使用任何HTML.fromHTML),它确实工作正常。 现在来了。 每当我使用多个小型ImageView,一个Button以及一些使用SpannableStringBuilder进行不同样式设置的TextView扩展我的行布局时,我都会获得停止滚动的性能。 该行包含一个RelativeLayout作为父级,所有其他元素都使用布局参数排列,因此我的布局中不能使该行更简单。 我必须承认,我从未见过任何包含许多UI元素的行的ListView实现示例。 但是,当我在ScrollView中使用TableLayout并使用AsyncTask(通过onProgressUpdate()稳定添加新行)手动填充它时,即使其中有数百行,它也表现得非常流畅。 如果滚动到列表末尾,添加新行时会稍微绊倒一下。 否则它比ListView更平滑,它在滚动时总是绊倒。 当ListView不想表现好时,有什么建议吗? 我应该继续使用TableLayout方法还是建议使用ListView来优化性能? 这是我的适配器的实现: protected class BlogsSeparatorAdapter extends BaseAdapter { private LayoutInflater inflater; private final int SEPERATOR = 0; private final int BLOGELEMENT = 1; public BlogsSeparatorAdapter(Context context) { inflater = LayoutInflater.from(context); } @Override public int getCount() { return blogs.size(); } @Override public […]

如何在listview的行和它的后代之间使用D-pad导航切换(Google-TV支持)

我有一个listview,每个列表项中都有一个imageview,当用户点击该imageview时,它会popup一个菜单。 它在带触摸屏的普通Android设备上运行良好。 但现在我想支持谷歌电视,哪个应用程序应该由D-pad控制。 当我使用D-pad在listview中导航时,只有整行可以聚焦,我无法将listview内的imageview作为焦点。 我尝试将android:focusable =“true”添加到imageview,但它导致整个listview无法接收onItemClick事件。 有没有人知道如何使用d-pad在listview行和listview中的项目之间移动焦点还可以保持listview和imageview可点击? 非常感谢!

滑动即可删除listitem

我想实现一个滑动手势来删除类似于Android通知的ListView行。 现在我所拥有的是一个带有onTouchListener的ListView – 就是说,我已经有滑动检测工作了。 gestureDetector = new GestureDetector(this, new GestureListener()); onTouchListener = new TouchListener(); listview.setOnTouchListener(onTouchListener); 我的GestureListener类: protected class GestureListener extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE = 150; private static final int SWIPE_MAX_OFF_PATH = 100; private static final int SWIPE_THRESHOLD_VELOCITY = 100; private MotionEvent mLastOnDownEvent = null; @Override public boolean onDown(MotionEvent e) { mLastOnDownEvent […]

检查ListView中所有checkbox的正确方法?

我有一个ListView,设置为CHOICE_MODE_MULTIPLE。 我还有额外的标题来管理(取消)选择所有项目。 问题是:这样做是否正确? 它确实有效,但我不确定这是正确的方法。 如下所示,有一个checkAllCheckBoxes对象,我将其传递给头onClickListener()方法。 你怎么看? 对任何回复都会感激不尽。 private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = getListAdapter().getCount(); if(lv.isItemChecked(0)){ for(int i = 0; i<=size; i++){ lv.setItemChecked(i, false); } } else { for(int i = 0; i<=size; i++){ lv.setItemChecked(i, true); } } } };

如何限制列表项在ListView中显示10和10后单击下一步按钮

我有一个包含100个项目的列表视图,我想显示前10个项目,点击下一个按钮我必须显示下一个10即。从11到20,我有获得前10项的代码 public int getCount() { return 10; } 但如何单独获得下一个10项等等。 任何想法

ListView – getView被调用太多次了

我知道关于’getView被叫几次’这个问题的问题很少,但我的问题却没什么不同。 我有一个自定义listView与自定义行(使用row_layout.xml)。 它通常运作良好。 一开始我遇到了多次调用getView的问题,并且使用我在stackoverflow中看到的方法之一修复了它。 (使用’usedPositions’数组)。 现在,我在日志中看到这个场景:getView pos 0,getView pos 1,getView pos 0,getView pos 1.这导致我的行加倍。 只有当我调用覆盖当前活动的新活动然后关闭该活动时才会发生这种情况。 (例如,打开相机活动,然后关闭它)。 我将展示我的代码: public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View row = convertView; Toast toast = Toast.makeText(this.context, “getView ” + position, 1000); toast.show(); String pos = Integer.toString(position); if (!usedPositions.contains(pos)) { CardHolder holder = […]

Android ListActivity – 如何在ListView下面添加视图?

我正在尝试在ListView下面的ListView中放置一个ProgressBar视图。 我希望它始终低于listView中的最后一行。 只要列表(在运行时由适配器填充)未超出屏幕,就会出现放置在LinearLayout中的ProgressBar。 只要列表大于屏幕,ProgressBar就不再可见。 布局xml如下所示: LinearLayout无法实现这一点吗? 任何帮助赞赏。

如何在Android中打开/关闭导航抽屉列表时立即刷新

我创建了导航抽屉并在列表中显示项目。 我的列表是静态的,但我正在显示点数。 因此,当用户选择列表中的项目并进行一些活动时,他会获得积分。 所以我想尽快更新积分。 我怎样才能做到这一点。/ 以下是我的代码: 活动类: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home_page); // Initializing dataList = new ArrayList(); mTitle = mDrawerTitle = getTitle(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); sharedPreferences = getSharedPreferences(Constant.LOGIN_CHECK, Constant.PRIVATE_MODE); editSharedPreferences = sharedPreferences.edit(); if (sharedPreferences.getBoolean(Constant.IS_ALREADY_LOGIN, false)) { loginInBackground(); } String p1 = sharedPreferences.getString(Constant.USERS_POINTS, “”); String […]

将ID分配给Android ListView中的行

我有一个ListView。 当点击ListView上的项目时,它会加载一个SubView。 我想为ListView的每一行分配一个ID,所以我可以将该ID传递给SubView。 如何为ListView中的每一行分配特定ID? 这是我当前加载ListView的方式: setListAdapter(new ArrayAdapter(this, R.layout.list_item, mArrayList));

自动完成文本视图与Google地方信息显示在ListView中,就像优步一样

我需要制作类似于此的屏幕。 我认为它有autocompletetextview和listview来显示返回的结果。 此处使用Google Place API自动建议地点,并相应地更新listview适配器。 请各种帮助表示赞赏。 提前致谢。 在AutoComplete上检查了android示例项目的位置。 但它没有任何列表视图来显示结果。 相反,它会在autocompletetextview微调器中显示结果。 我们可以对该项目进行任何修改 链接到谷歌示例项目