标签: android-adapter

如何从适配器访问ListView

我有ListView自己的适配器的自定义.我正在处理ButtonListView的项目中的点击,我希望ListView在此点击时看不见.

我不知道如何ListView从适配器访问.

public class ScheduleArrayAdapter extends ArrayAdapter<ScheduleListItem> {

    /*...*/
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(id, null);
        }
        final ScheduleListItem o = items.get(position);
        if (o != null) {

        /*...*/         

            Button details=(Button)v.findViewById(R.id.btn_details);
            details.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //HOW TO MAKE (R.id.lv_schedule) TO BECOME INVISIBLE HERE?
                }
            });
        } …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-adapter

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

使用Android AutoCompleteTextView和ArrayAdapter <Objects>而不是ArrayAdapter <Strings>

我想在我的android应用程序中使用AutoCompleteTextView.我知道如何使用简单的字符串数组,但我希望AutoCompleteTextView使用对象列表来执行完成.我的代码如下:

活动代码

public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);

        initialize();
        ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this,
                R.layout.dropdown_list_item, GetAllStudentsList());

        searchBox.setAdapter(adapter);
        searchBox.setThreshold(THRESHOLD_VALUE);
        searchBox.setTextColor(Color.BLACK);
}

searchBox.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view,
                int position, long arg3) {
                     //Here i will grab the Student object that user selected from drop-down

        }

    });

public ArrayList<Movies> GetAllStudentsList() {

//This method returns a ArrayList of <Student> type objects
}
Run Code Online (Sandbox Code Playgroud)

学生班对象有关于学生的信息ID,NAME,ADDRESS,MARKS.

我知道AutoCompleteTextView需要一个String类型对象的数组来执行搜索操作.在我的情况下,我希望AutoCompleteTextView使用我的ArrayList在Student对象字段NAME的基础上执行完成.我不知道如何指定AutoCompleteTextView使用NAME字段学生对象.请帮我提供任何链接或一个小例子.

谢谢

android autocomplete android-adapter android-view

26
推荐指数
2
解决办法
4万
查看次数

ListView或TableLayout?

我现在真的很困惑要学习哪一个.我是一名iPhone应用程序开发人员,现在正在学习Android开发.

我已经学会了如何使用ListView带有静态字符串的字符串Adapter.我习惯在iPhone中使用自定义单元格,主要用于显示TableViews中的图像和文本等动态内容.

那么在Android中这样做的方法是什么?TableLayout还是ListView

android custom-cell android-listview android-adapter android-tablelayout

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

在使用RecyclerView时,notifydatasetchanged调用onCreateViewHolder

我想使用切换来在两个不同的视图之间切换,但使用相同的视图RecyclerView.基本上,一旦你切换,我想要RecyclerView适配器调用,onCreateViewHolder()但这次它将使用不同的布局项目文件.

是否notifydatasetchanged()导致适配器重建?或者还有另一种方式吗?

android android-adapter notifydatasetchanged android-recyclerview

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

ArrayAdapter的getView()方法的说明

你能解释一下这种getView()方法吗ArrayAdapter

我阅读了文档,它有三个参数:

  • position:项目在我们想要的视图的项目的数据集的位置.
  • convertView:如果可能的话,重用旧视图.注意:在使用之前,应检查此视图是否为非null且类型是否合适.如果无法转换此视图以显示正确的数据,则此方法可以创建新视图.
    异构列表可以指定其视图类型的数量,以便此视图始终是正确的类型(请参阅getViewTypeCount()和getItemViewType(int)).
  • parent:此视图最终将附加到的父级

我理解了position参数.就像他们说的那样,这意味着该项目的位置,已经请求了视图.

convertView来自哪里.我见过很多例子,他们检查是否convertView为null.如果is为null,则它们会对行布局的新实例进行膨胀,填充并返回它.我想我也已经知道了这一点,但还有一件事让我感到困惑.通过convertView参数传递的布局是什么.如果初始化时传入resource参数是ArrayAdapter?是返回的最后一个布局的缓存副本getView()

最后.什么是parent参数做.我没有看到太多利用它的例子.他们中的大多数只是重复/膨胀行布局并返回它.

(我问,因为我的点击动画在我的ListView.特别是这个旨在复制Spotify的下拉快速动作菜单.我的动画有点迟钝.在诊断了这个问题一段时间之后,我意识到这是因为我的getView()方法需要花费一些时间才能完成,因为我在每次迭代中都在为一个新的行布局充气.有人建议缓存行布局,ViewHolder其他一些例子指向重用convertView参数,即仅膨胀一个行布局如果convertView为null.)

java android android-arrayadapter android-listview android-adapter

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

Android - 将搜索过滤器实施到RecyclerView

我需要实现一个基于EditText我的搜索功能RecyclerView.键入时必须过滤列表.

这是代码:

DisplayAdapter.java这是适配器

public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.MyViewHolder>{
    private List<DataHolder> displayedList;
    public class MyViewHolder extends RecyclerView.ViewHolder{
        public TextView english_d;
        public MyViewHolder(View view){
              super(view);
              english_d = (TextView) view.findViewById(R.id.engword);
        }
   }
    public DisplayAdapter(List<DataHolder> displayedList){
        this.displayedList = displayedList;
      }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int position)    {
    // create a layout
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

    return new  MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    DataHolder content = displayedList.get(position);
    holder.english_d.setText(content.getEnglish());
   }
@Override
public int …
Run Code Online (Sandbox Code Playgroud)

search android filter android-adapter android-recyclerview

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

Android数据绑定:RecyclerView适配器的可观察列表

他们是通过使用ObservableList新的数据绑定库和MVVM模式中"notifyItem(s)..."Adapter类来避免使用类中的方法吗?

或者如果不是什么可能是最简单的方法绑定ObservableListRecyclerView

谢谢你的任何线索!

data-binding android mvvm android-adapter android-recyclerview

20
推荐指数
1
解决办法
9706
查看次数

Android:自定义列表视图中的单选按钮

我正在开发一个应用程序,我需要在列表视图中实现单选按钮.我想实现一个列表视图,每行有一个单选按钮和两个文本视图.列表视图下方有一个"确定"按钮.

我所做的是创建了一个列表视图和一个自定义适配器.listview的代码如下:

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:cacheColorHint="#00000000"
    android:overScrollMode="never"
    tools:ignore="NestedScrolling"
    android:choiceMode="singleChoice" >
</ListView>
Run Code Online (Sandbox Code Playgroud)

我创建了一个自定义适配器布局:

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

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        tools:ignore="UselessParent" >

        <RadioButton
            android:id="@+id/radiobutton"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_weight=".1" />

        <TextView
            android:id="@+id/textview1"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_weight=".3" />

        <TextView
            android:id="@+id/textview2"
            android:layout_width="0sp"
            android:layout_height="wrap_content"
            android:layout_weight=".3" />

    </TableRow>

</TableLayout>
Run Code Online (Sandbox Code Playgroud)

片段的java代码如下:

ListView listView = (ListView) view.findViewById(R.id.listview);

// values is a StringArray holding some string values.
CustomAdapter customAdapter = new CustomAdapter (getActivity(), values);
listView.setAdapter(customAdapter );
listView.setOnItemClickListener(this);

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int …
Run Code Online (Sandbox Code Playgroud)

android radio-button android-layout android-listview android-adapter

19
推荐指数
1
解决办法
6万
查看次数

android notifyItemRangeInserted禁用自动滚动

我正在使用RecyclerView作为我的数据列表的基础.我已经实现了基于ArraList的自定义RecyclerView.Adapter.从互联网上获取数据我正在运行的代码是:

public void addItems(List<Item> items){

    final int size = data.size();
    data.addAll(items);
    notifyItemRangeInserted(size, items.size());
}
Run Code Online (Sandbox Code Playgroud)

问题是,在运行此代码后,我将自动滚动到列表的底部(最后一个元素现在可见)

有没有办法禁用它?找不到任何类似的问题.

相关信息:我的适配器有2个viewHolders - 对于位置0它有一个视图(viewType为0),对于其余的列表,它有viewType 1的视图

谢谢你的帮助!

罗伊

android android-adapter android-recyclerview

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

使用AsyncTask在ListView中加载图像

我有一个可以容纳图像的ListView.这取决于SDCARD中是否存在图像.

这是我的示例代码:

public class MainActivity extends Activity  {

    ListView mListView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mListView = new ListView(this);
        setContentView(mListView);

        String[] arr = new String[] { 
                "/example/images/1.jpg", "/example/images/2.jpg",  
                "/example/images/3.jpg", "/example/images/4.jpg",  
                "/example/images/5.jpg", "/example/images/6.jpg", 
                "/example/images/7.jpg", "/example/images/8.jpg",  
                "/example/images/9.jpg", "/example/images/1.jpg", 
                "/example/images/2.jpg", "/example/images/3.jpg",  
                "/example/images/4.jpg", "/example/images/5.jpg",  
                "/example/images/6.jpg", "/example/images/7.jpg",  
                "/example/images/8.jpg", "/example/images/9.jpg", 
                "/example/images/1.jpg", "/example/images/2.jpg",  
                "/example/images/3.jpg", "/example/images/4.jpg",  
                "/example/images/5.jpg", "/example/images/6.jpg", 
                "/example/images/7.jpg", "/example/images/8.jpg",  
                "/example/images/9.jpg", "/example/images/1.jpg", 
                "/example/images/2.jpg", "/example/images/3.jpg",  
                "/example/images/4.jpg", "/example/images/5.jpg",  
                "/example/images/6.jpg", "/example/images/7.jpg",  
                "/example/images/8.jpg", "/example/images/9.jpg"}; 

        List<String> list = Arrays.asList(arr);

        MyAdapter adapter = new MyAdapter(this, R.layout.listitem_imv, list);

        mListView.setAdapter(adapter);
    }

    class MyAdapter extends …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-adapter android-asynctask

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