标签: android-adapterview

如何从自动完成textview android获取文本

我的应用程序中有一个AutoCompleteTextView可以正常工作.我已经成功创建了一个onClickItemListener.问题是如何获取用户选择的文本.事情就是这样:我有一个ArrayList,其中的单词被传递给Adapter来搜索建议.当用户键入单词时,建议列表变得更短(在UI侧的行中),所以当我想从索引中的ArrayList获取单词时,用户选择了我得到错误的单词,因为索引不匹配.如何获得用户选择的文本(String)而不必弄乱索引?这是我的代码:

public class AutocompleteActivity extends BaseActivity {

    private DBManager m_db;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.autocomplete);

        m_db = new DBManager(this);
        final ArrayList<String> words = m_db.selectAllWords();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, words);

        AutoCompleteTextView tv = (AutoCompleteTextView)findViewById(R.id.autocomplete);
        tv.setThreshold(1);
        tv.setAdapter(adapter);

        tv.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                Log.i("SELECTED TEXT WAS------->", words.get(arg2));
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-adapterview

29
推荐指数
4
解决办法
6万
查看次数

如何从android中的setOnItemClickListener中的listview获取对象?

我在arrayadapter中添加了arraylist,其中包含每个由两个元素/项组成的对象,我已成功为setListAdapter设置了该适配器,现在我想在listview的setOnItemClickListener中获取这些项.

这是我的代码

   TweetListAdaptor adaptor = new TweetListAdaptor(this,R.layout.list_item, tweets);       
   setListAdapter(adaptor); 
   ListView lv = getListView();
   lv.setTextFilterEnabled(true);
   lv.setOnItemClickListener(new OnItemClickListener() 
   {
   public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
   {
     //here i want to get the items             
   }
 });
Run Code Online (Sandbox Code Playgroud)

android android-adapterview

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

扩展AdapterView

我正在尝试(用于学习目的)我自己实现的简单AdapterView,其中的项目来自基本的适配器(来自sdk示例的ImageAdapter).

实际代码是这样的:

    public class MyAdapterView extends AdapterView<ImageAdapter> implements AdapterView.OnItemClickListener{
    private ImageAdapter mAdapter;
    public MyAdapterView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initThings();
    }
    private void initThings(){
        setOnItemClickListener(this);
    }
    @Override
    public ImageAdapter getAdapter() {
        // TODO Auto-generated method stub
        return mAdapter;
    }
    @Override
    public void setAdapter(ImageAdapter adapter) {
        // TODO Auto-generated method stub
        mAdapter=adapter;
        requestLayout();
    }
    View obtainView(int position) {
        View child = mAdapter.getView(position, null, this);
        return child;
    }
    @Override
    protected void onLayout(boolean changed, int l, int t, int …
Run Code Online (Sandbox Code Playgroud)

android android-adapterview

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

AdapterView不支持removeView(View)

我想在单击ImageView时从listView中删除某一行.我的listview看起来像这样: 在此输入图像描述

我希望在单击最后一个图像时删除该行.这是我的适配器:

public class UserItemAdapter extends ArrayAdapter<Photos.Record> {
        private ArrayList<Photos.Record> photos;

        public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Photos.Record> photos) {
            super(context, textViewResourceId, photos);
            this.photos = photos;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            View v = convertView;


            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.photorowlist, null);
                                v.setClickable(true);
                                v.setFocusable(true);
            }

            Photos.Record user = photos.get(position);
            if (user != null) {
                TextView photo_name = (TextView) v.findViewById(R.id.photoname);

                if (photo_name != null) {
                    photo_name.setText(user.photo_name);
                }

            }
                        v.setOnClickListener(new …
Run Code Online (Sandbox Code Playgroud)

android listview adapter android-adapterview

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

RecyclerView - 我应该在哪里处理其点击事件?

在引入RecyclerView(及其强制ViewHolder模式)之前,我通常将任何单击事件委托给其对应Activity/ Fragment使用setOnItemClickListener().(因为我在开发Android时主要看Activity/ Fragment作为"控制器"对象,因此应该在视图中对视图进行任何修改.)

现在,RecyclerView并没有真正以同样的方式对待它的孩子,并且setOnItemClickListener()不再为它实现那些(或类似的)方法 - 我应该在哪里处理可能发生的点击事件?我不知道......但处理它们Adapter对我来说似乎很尴尬.

我们该怎么做呢?

提前致谢!

android android-adapter android-adapterview

10
推荐指数
1
解决办法
8487
查看次数

java.lang.UnsupportedOperationException:AdapterView不支持addView(View,LayoutParams)

我正在使用net上发现的Expandable ListView示例

活动:

public class ExpandableListViewActivity extends ExpandableListActivity {
    /**
     * strings for group elements
     */
    static final String arrGroupelements[] = { "India", "Australia", "England",
            "South Africa" };

    /**
     * strings for child elements
     */
    static final String arrChildelements[][] = {
            { "Sachin Tendulkar", "Raina", "Dhoni", "Yuvi" },
            { "Ponting", "Adam Gilchrist", "Michael Clarke" },
            { "Andrew Strauss", "kevin Peterson", "Nasser Hussain" },
            { "Graeme Smith", "AB de villiers", "Jacques Kallis" } };

    DisplayMetrics metrics;
    int width;
    ExpandableListView expList;

    @Override …
Run Code Online (Sandbox Code Playgroud)

android exception expandablelistview android-adapterview

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

将android:windowBackground设置为@null会使滚动变为拖尾?

我正在使用sherlock actionbar库以支持许多设备.我有一个viewPager有3个片段:

  • 一个有a listView,每个项目有一个textView和一个imageView
  • 第二个有一个gridView,每个项目都有一个textView和一个imageView
  • 第三个只是textView现在.

正如我在Google IO视频中听到的那样(并且自Lint告诉我),建议将下一个样式用于所有活动:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

  <style name="AppTheme" parent="@style/Theme.Sherlock">
    <item name="android:windowBackground">@null</item>
  </style>

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

这在很多设备上对我有用.

然而,在模拟器上,使用版本2.3.3,以及在galaxy nexus上,当我滚动(viewPager或者任何一个adapterViews)时,一切都只是涂抹,所以我得到了很多白色像素,好像什么都没有刷新.

我甚至试图为android:cacheColorHint="#00000000"我的所有adapterView设置,但它仍然会发生.

到底是怎么回事?我怎么能解决这个问题?我喜欢添加上面的内容,因为它删除了每个应用程序出现的丑陋S3的丑陋渐变背景.

android android-adapterview

8
推荐指数
1
解决办法
2809
查看次数

isItemChecked总是返回与onItemClickListener内部相反的内容?

我现在有一个ListView,激活上下文ActionBarListViewOnItemLongClickListener.

我试图通过点击它们来选择项目,但只有在Contextual ActionBar启动时才能选择项目.

问题是,当我检查时isItemChecked(),为了切换项目的选择状态,它总是返回与预期相反的状态.

以下是我如何实现OnItemClickListener:

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (mActionMode != null){
            list.setItemChecked(position, !list.isItemChecked(position));
        }
        else{
            list.setItemChecked(position, false);
        }

    }

});
Run Code Online (Sandbox Code Playgroud)

编辑:这是非常古怪..这段代码切换选择状态:

list.setItemChecked(position, list.isItemChecked(position));
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事!?

编辑2:啊,看起来android自动检查并取消选中每个项目...有没有办法改变这种行为并自己处理?

android android-listview android-adapterview

8
推荐指数
1
解决办法
1237
查看次数

requestLayout()由android.widget.RelativeLayout android不正确地调用

我在显示listview时实现了listview customadapter,它显示了如何重新启动它.

requestLayout() improperly called by android.widget.RelativeLayout{b42acc20 V.E..... ......ID 0,-52-480,0 #7f0700ec app:id/ptr_id_header} during layout: running second layout pass
Run Code Online (Sandbox Code Playgroud)

java代码

public View getView(int position, View convertView, ViewGroup parent)
{
    View view = convertView;
    if (view == null)
    {
        LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = vi.inflate(R.layout.listitemrow, null);
    }
    RssItem rssItem = mRssItemList.get(position);
    if (rssItem != null)
    {
        TextView title = (TextView) view.findViewById(R.id.rowtitle);
        if (title != null)
        {
            title.setText(rssItem.getTitle());
        }
    }
    return view;
}
Run Code Online (Sandbox Code Playgroud)

java android android-listview android-adapterview

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

在自定义AdapterView中实现onMeasure()和onLayout()的正确方法

我知道我应该测量孩子onMeasure()并将其布局onLayout().问题是我应该在这些方法中添加/回收视图,以便我可以一起测量所有孩子,看看它们是如何相互定位的(即网格,列表或其他)?

我的第一种方法是在添加/回收的观点onLayout(),但是从这一点来说,因为他们不会被添加到适配器视图但我不能衡量我的孩子们getChildCount()回报0onMeasure().如果没有孩子已经布置,我无法测量AdapterView本身,因为它真的取决于他们的相互位置,对吗?

当动态添加/删除子项时,我对AdapterView中的android布局过程感到困惑.

android android-custom-view android-layout android-adapterview

8
推荐指数
1
解决办法
996
查看次数