标签: android-listview

ListView的最后一项之后的分隔符(分隔符)

当我创建一个只有ListView的简单布局时,在最后一项之后没有显示分隔符,这看起来有点难看.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,如果我在列表视图下添加另一个视图并设置listview的属性,我发现在最后一个项目后面会显示一个分隔符android:layout_above.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bottom"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@android:color/holo_blue_dark"
        android:text="Bottom" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

为什么listview的行为如此?如何在仅包含列表视图的布局中的最后一项之后获取分隔符?

android android-listview

51
推荐指数
3
解决办法
3万
查看次数

是否可以扩展AbsListView以实现新的ListView实现?

我一直在寻找创建风格不同的列表视图,就像许多其他人一样,我开始寻求扩展AbsListView.根据Android文档,AbsListView是:

可用于实现项目虚拟化列表的基类.列表在此处没有空间定义.例如,此类的子类可以在网格中,在轮播中,作为堆栈等显示列表的内容.

ListView控件执行的一些努力和审查后,它看起来像它可能无法延长AbsListView ListView控件的方式做,因为这两类连接器和无法访问某些包装成员.我偶然发现了这个形式的罗曼盖伊:

AbsListView和AbsSpinner旨在在框架内进行扩展.它们也可以在第三方应用程序中扩展,但我们没有故意公开所有必要的受保护字段和方法.我们希望在如何公开此类API时要非常小心,以免获得未来扩展和内部更改的内容.我们目前的建议是,您只需在应用内复制/粘贴所需的代码即可.

我开始尝试这样做,但是复制AbsListView变成了一个复制其他东西的兔子洞,它实际上似乎是一个失败的主张.我想看看是否有人成功扩展了可以共享方法的AbsListView.

[1] http://developer.android.com/reference/android/widget/AbsListView.html

[2] https://groups.google.com/forum/?fromgroups#!topic/android-developers/UhbR1tpVvF0

android android-listview

50
推荐指数
1
解决办法
6253
查看次数

如何在android中使用快速滚动?

我列出了按月和年分开的活动清单(2010年6月,2010年7月等)

我想启用快速滚动,因为列表非常长.

如何ListViews在Android中启用快速滚动?

android android-listview fastscroll

48
推荐指数
3
解决办法
4万
查看次数

如何从多选列表视图中获取所选项目

我正在使用数组适配器,并且这是添加字符串s的数组列表,列表是多选,如何获取列表项的值被点击?

my_contacts_list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice,conts_list);
  my_contacts_list.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

我试图这样做,

SparseBooleanArray positions = my_contacts_list.getCheckedItemPositions();
  int size=positions.size();
  int i=0;
  while(i <= size){
   conts_list.get(positions.get(i));
   i++;
  }
Run Code Online (Sandbox Code Playgroud)

但是position.get(i)是一个数组列表,那么如何检索所选项呢?

android android-listview

47
推荐指数
3
解决办法
8万
查看次数

将ActionBar隐藏在RecyclerView/ListView onScroll上

在我的应用程序中,我得到了一个活动,顶部有一些动作栏,下面是列表视图.我想要做的是 - 用列表向上滚动它,所以它隐藏然后,当列表向下滚动时 - 它应该向下滚动列表,就像它刚好在屏幕上边框上.我该如何实现这一功能?

android scroll vertical-scrolling android-listview android-actionbar

45
推荐指数
3
解决办法
5万
查看次数

使用上下文操作栏在自定义列表视图上选择的项目

我最近开始使用机器人为其他动作上下文的动作条(CAB).

我只有一个活动是ListActivity.基本上我使用以下代码剪切来"激活"CAB:

ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

    @Override
    public void onItemCheckedStateChanged(ActionMode mode, int position,
                                      long id, boolean checked) {
        // Here you can do something when items are selected/de-selected,
        // such as update the title in the CAB
    }

    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // Respond to clicks on the actions in the CAB
        switch (item.getItemId()) {
            case R.id.menu_delete:
                deleteSelectedItems();
                mode.finish(); // Action picked, so close the CAB
                return true; …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-listview android-linearlayout

42
推荐指数
2
解决办法
3万
查看次数

内存泄漏自定义字体设置自定义字体

以下用于设置自定义字体的代码会降低整个应用程序的速度.我如何修改它以避免内存泄漏,提高速度和管理内存?

public class FontTextView extends TextView {
    private static final String TAG = "FontTextView";

    public FontTextView(Context context) {
        super(context);
    }

    public FontTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }

    public FontTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context, attrs);
    }

    private void setCustomFont(Context ctx, AttributeSet attrs) {
        TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.FontTextView);
        String customFont = a.getString(R.styleable.FontTextView_customFont);
        setCustomFont(ctx, customFont);
        a.recycle();
    }

    public boolean setCustomFont(Context ctx, String asset) {
        Typeface tf = null;
        try {
        tf = …
Run Code Online (Sandbox Code Playgroud)

android android-emulator android-intent android-layout android-listview

42
推荐指数
1
解决办法
2万
查看次数

Android:requestLayout()调用不当

当我尝试在以下内容中扩充布局时发生以下错误ListView:

requestLayout() improperly called by android.widget.TextView{...} during layout: running second layout pass
Run Code Online (Sandbox Code Playgroud)

我试图在一个内部膨胀布局ListView如下:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null){
        LayoutInflater inflater = (LayoutInflater) musicActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.list_item, parent, false);
        ...
    }else{...}
}
Run Code Online (Sandbox Code Playgroud)

膨胀的布局可以看起来像下面这样简单,并且仍然会产生错误

<TextView
    android:id="@+id/txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="@dimen/txt_size"/>
Run Code Online (Sandbox Code Playgroud)

我已经研究了类似的问题,找不到任何解决方案似乎工作问题1,问题2,问题3.

有谁知道导致此类错误的原因是什么?任何疑难解答建议 对于更多上下文,它ListView显示在a FragmentViewPager

UPDATE

这是完整的XML布局(减去一堆属性),仍然会导致问题

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent">

 <TextView
    android:id="@+id/txt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

 <TextView
    android:id="@+id/txt2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

 <TextView …
Run Code Online (Sandbox Code Playgroud)

performance android android-listview

42
推荐指数
5
解决办法
5万
查看次数

使用ListView:如何添加标题视图?

我在ListView API上闲逛, 我看到了方法:

addHeaderView(查看v)

我想要做的是在列表上方有一个布局,这可能吗?

我尝试过这样的事情:

  EditText et=new EditText(this);
  et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT,     LayoutParams.WRAP_CONTENT));
  et.setInputType(InputType.TYPE_CLASS_TEXT); 
  addHeaderView(et); //makes app crash
Run Code Online (Sandbox Code Playgroud)

我也试过了

setContentView(R.layout.tryview);
Run Code Online (Sandbox Code Playgroud)

但它也使应用程序崩溃.

非常感谢帮助!

编辑:此类的代码是:

public class GroupsActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  String your_array_contents[] = {"a","ab","c"};
  setListAdapter(new ArrayAdapter<String>(this, R.layout.groups_layout, your_array_contents));
  EditText et=new EditText(this);
  et.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
  et.setInputType(InputType.TYPE_CLASS_TEXT); 

  ListView lv = getListView();
  lv.setTextFilterEnabled(true);
  lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

  lv.setAdapter(new ArrayAdapter<String>(GroupsActivity.this,
    android.R.layout.simple_list_item_multiple_choice, your_array_contents));
    lv.addHeaderView(et); //makes app crash
  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) …
Run Code Online (Sandbox Code Playgroud)

android android-listview

41
推荐指数
2
解决办法
11万
查看次数

退出选择模式后,ListView选择保持不变

我有一个ListView子类,我允许在上下文操作栏(CAB)处于活动状态时进行选择.CAB被设置为onItemLongClick事件的回调:

public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    // Inflate a menu resource providing context menu items
    MenuInflater inflater = mode.getMenuInflater();
    inflater.inflate(context_menu, menu);
    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这很好,ListView按预期工作,当前选定的项目在触摸时保持突出显示.

当我关闭CAB时,我希望ListView恢复正常(即触摸模式).问题是最后选择的项目会无限期地突出显示,无论我尝试清除它的方法是什么:

public void onDestroyActionMode(ActionMode mode) {
    //Unselect any rows
    ListView lv = getListView();
    lv.clearChoices(); // Has no effect
    lv.setChoiceMode(ListView.CHOICE_MODE_NONE); // Has no effect on the highlighted item 
    lv.setFocusable(false); // Has no effect
    lv.setSelection(0); // Has no effect
    mActionMode = null;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java android android-listview

41
推荐指数
3
解决办法
2万
查看次数