标签: android-arrayadapter

CheckBox更改值两次

我有一个Android,ListView其项目有一个复选框.

默认情况下会选中该复选框.取消选中后,应将其从列表中删除.

问题是onCheckedChanged被解雇了两次:当我点击复选框取消选中它(带isChecked false)和我删除项目后(带isChecked true).

这是我的ArrayAdapter的相关代码:

public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.item, parent, false);
        holder = new ViewHolder();
        holder.check = (CheckBox) convertView.findViewById(R.id.check);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    final Object item = this.getItem(position);
    holder.check.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (!isChecked) {
                remove(item); // This somehow calls onCheckedChanged again
            } …
Run Code Online (Sandbox Code Playgroud)

checkbox android listview android-arrayadapter

7
推荐指数
3
解决办法
5678
查看次数

如何禁用ListView中的项目

ListViewAlertDialog在Android中有一个设置,我试图添加分隔符作为标题标题来帮助组织信息.我想出了如何显示它们......但它们仍然可由用户选择,这是不好的.

有没有办法禁用Android中可选择的项目ListView?我找到了一种方法isEnabled(int position)来查看某个项目是否已启用,但没有查看是否已禁用该项目.

android listview android-arrayadapter

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

Android在一个结果中自动完成多个textview行

无论如何在一个AutoCompleteTextView结果中有两个TextView?

例如

-------------------------------
result 1 title
result 1 alt text
-------------------------------
result 2 title
result 2 alt text
-------------------------------
Run Code Online (Sandbox Code Playgroud)

等等...

ArrayAdapter只允许一个视图绑定,那么如何在适配器中绑定更多视图?

像这样:

(...= new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_1item, R.id.list_item, String[]);
Run Code Online (Sandbox Code Playgroud)

我已经为ArrayAdapter中的layout参数创建了一个新的xml布局,除非我将TextView绑定到字符串数组,它只将文本设置为具有给定id的TextView.

我还搜索了关于这个的其他帖子,但它不符合我的需要.

如果有人可以帮助那将是绝对伟大的:)

谢谢.

android autocomplete textview android-arrayadapter

7
推荐指数
1
解决办法
1765
查看次数

为什么食谱会在看起来不必要的时候推广覆盖getItemViewType和getViewTypeCount?

我一直在使用Commonsware Android编程教程和教程5,额外的功劳2,挑战是使用多个布局在ListView中显示行,具体取决于对象的"类型名称"(餐厅的"类型"属性,这是一个字符串).因此,它表明压倒一切getItemViewType,并getViewTypeCount在自定义ArrayAdapter.此外,Android文档和其他在线食谱博客文章也提出了相同的建议.

在这种情况下,遵循此配方并覆盖这两种方法可以正常工作,但会导致基于检查该Restaurant"type"属性值的冗余逻辑.例如(请注意,此适配器是一个内部类,并且restaurants是声明为外部Activity成员的Restaurant对象的ArrayList):

class RestaurantsAdapter extends ArrayAdapter<Restaurant> {

  private static final int ROW_TYPE_DELIVERY = 0;
  private static final int ROW_TYPE_TAKE_OUT = 1;
  private static final int ROW_TYPE_SIT_DOWN = 2;

  RestaurantsAdapter() {
    super(LunchListActivity.this, android.R.layout.simple_list_item_1, restaurants);
  }

  public int getViewTypeCount() {
    return 3;
  }

  public int getItemViewType(int position) {
    String type = restaurants.get(position).getType();
    if (type == "delivery") {
      return ROW_TYPE_DELIVERY;
    } else if (type == "take_out") {
      return ROW_TYPE_TAKE_OUT;
    } …
Run Code Online (Sandbox Code Playgroud)

android android-arrayadapter commonsware android-view

7
推荐指数
1
解决办法
3938
查看次数

如何异步向列表视图添加行?

我需要填充ListView来自网络的数据,例如整个数据收集的2-3秒.我不希望用户看到加载Dialog并等待整个列表下载.相反,我希望在ListView每个项目可用时更新.

  • 我怎样才能做到这一点?
  • 我假设通过添加到ArrayAdapter一个AsyncTaskOnProgressUpdate
  • notifyDatasetChanged()每次添加行后是否必须发出?
  • Fragment/ Loader办法更好?
  • 对于这样的案例,是否有教程或API演示参考实现?

Activity模具之前完全取出数据并不重要(即Service不必要)

android android-arrayadapter android-listview android-asynctask android-fragments

7
推荐指数
1
解决办法
2816
查看次数

IllegalStateException:适配器的内容已更改,但ListView未收到通知

我正在使用自定义ArrayAdapter在AutocompleteTextView上设置适配器(AddressAdapter extends ArrayAdapter).

public class AutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
private ArrayList<String> mData;
ArrayList<String> listTempPrefix = new ArrayList<String>();
ArrayList<String> listTemp = new ArrayList<String>();
String valueText;
String[] words;
String ulcase;

public AutoCompleteAdapter(Context context, int textViewResourceId, ArrayList<String> bS) {
    super(context, textViewResourceId);
    mData = bS;//new ArrayList<String>();
}

@Override
public int getCount()
{
    synchronized (listTempPrefix)
    {
        return listTempPrefix.size();
    }
}

@Override
public String getItem(int index)  
{
    synchronized (listTempPrefix)
    {
        try {
            //Log.e("Error", listTempPrefix.get(index));
            return listTempPrefix.get(index);
        } catch(IndexOutOfBoundsException e) {
            Log.e("Error", "IndexOutOfBoundsException");
            return ""; …
Run Code Online (Sandbox Code Playgroud)

android filter android-arrayadapter

7
推荐指数
3
解决办法
4371
查看次数

你如何在LayoutInflater类的Android的inflate方法中使用第二个参数

所述的充气方法LayoutInflater抽象类具有作为取充气方法的第二个参数ViewGroup根.从文档中,它被称为"可选视图,作为生成的层次结构的父级".

有人可以举例说明如何使用这个参数吗?那你会放在那里?A ViewGroup可以是任何类型的布局LinearLayout.

我还不太明白如何处理这个参数.如果您正在膨胀的视图不是此处输入的布局的一部分,那么它将给出错误.不明白它的目的.

更多来自文档:

public View inflate (XmlPullParser parser, ViewGroup root)

Added in API level 1 Inflate a new view hierarchy from the specified xml node. Throws InflateException if there is an error.

出于性能原因,重要的是,视图通胀在很大程度上依赖于在构建时完成的XML文件的预处理.因此,目前还不能使用LayoutInflaterXmlPullParser过在运行时一个普通的XML文件.

参数解析器包含视图层次结构描述的XML dom节点.

root可选视图是生成的层次结构的父级.返回膨胀层次结构的根视图.如果提供了root,则这是根视图; 否则它是膨胀的XML文件的根.

android android-arrayadapter layout-inflater

7
推荐指数
1
解决办法
3626
查看次数

在getView将其膨胀两次后更新第一个gridview元素

我正在视图持有者/适配器模式之后创建"文档"的网格视图.在活动中,我从网络类中获得回调,因此我需要能够在不同的时间更新每个网格单元.

我这样做的方法是通过从对象元素(文档)到相应的视图持有者的映射映射.我需要这样做,因为适配器正在循环使用单元格,所以有时我可以收到一个回调来更新一个不可见的单元格,在这种情况下,回调信息将被忽略.

我可以看到getView适配器的方法被多次调用为位置0.我一直在读这是正常的.

inflating position 0  ***  progressBar 1
recycling position 0
recycling position 0
inflating position 0  ***  progressBar 2
recycling position 0
recycling position 0
recycling position 0
recycling position 0
recycling position 0
recycling position 0
Run Code Online (Sandbox Code Playgroud)

UI我需要从回调中更新的一个元素是一个进度条,我通过添加viewHolder到与文档关联的Map来跟踪.

除了第一个方法之外,这整个方法适用于所有位置.我可以识别的唯一区别是这些多次调用,getView所以我从那里开始调试.在progressBar我更新为" progressBar2",这是最新的geView夸大,但实际上它并没有给回应setVisible(View.VISIBLE).然后我对代码进行了一些更改以更新" progressBar1"并且它可以工作.

这意味着getView相同位置膨胀两次,但第二次没有被使用或显示.

我能做错什么?为什么progressbar1工作而progressbar2没有?我希望这getView会给我一个与职位相对应的最新观点.

谢谢.

适配器:

public class DocumentPickerGridViewAdapter extends ArrayAdapter<Document> implements Filterable {
  private final DocumentPickerGridViewController picker;
  private ArrayList …
Run Code Online (Sandbox Code Playgroud)

android gridview adapter inflate android-arrayadapter

7
推荐指数
1
解决办法
1046
查看次数

如何以横向显示AutoCompleteTextView建议

AutoCompleteTextView在纵向模式的下拉列表中显示它的建议.我想在对话框或横向模式的下拉列表中显示建议,此处EditText和键盘全屏显示.

我应该在适配器中使用哪种布局将提示显示为横向模式下的对话框.我目前正在使用android.R.layout.simple_dropdown_item_1line.

android landscape autocompletetextview android-arrayadapter

7
推荐指数
2
解决办法
2928
查看次数

如何在可搜索的微调器中使用SearchView.OnQueryTextListener()?

我正在使用第三方库创建一个可搜索的微调器.我在我的应用程序中添加了库类(SearchableListDialog,SearchableSpinner).一切都工作正常,但仍然是我面临的一个问题,例如,在搜索视图小部件中,如果我搜索Abc,我没有将结果过滤为Abc但是当点击列表视图项时,结果显示项目为ABC.这就像位置是项目的更改,但列表没有显示可搜索的结果.我不知道我哪里错了.我多次修改代码但没有得到理想的结果.

在此输入图像描述

Searchable Spinner xml代码:

 <com.example.my.currencyconverterapp.activity.SearchableSpinner
                    android:id="@+id/spinner"
                    android:layout_below="@+id/rl_currency_converterted_data"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />  
Run Code Online (Sandbox Code Playgroud)

这是我的片段代码,我正在为可搜索的微调器设置适配器.

countriesCustomAdapterInr = new CountriesCustomAdapterInr(getActivity(), R.layout.custom_spinner_items, arrayList,res);
        spinner.setAdapter(countriesCustomAdapterInr);
        assert spinner != null;
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(getActivity(), ""+arrayList.get(i).getFull_name()+i, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {}
        });  
Run Code Online (Sandbox Code Playgroud)

这是第三方SearchableSpinner类:

public class SearchableSpinner extends android.support.v7.widget.AppCompatSpinner implements View.OnTouchListener,
        SearchableListDialog.SearchableItem {

    public static final int NO_ITEM_SELECTED = -1;
    private Context _context;
    private List _items;
    private SearchableListDialog _searchableListDialog;

    private boolean _isDirty;
    private ArrayAdapter _arrayAdapter; …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter android-spinner searchview

7
推荐指数
2
解决办法
2194
查看次数