【问题标题】:Ripple effect in listViewlistView 中的波纹效果
【发布时间】:2016-01-11 11:50:59
【问题描述】:

我有一个工作正常的列表视图,涟漪效应在列表项 press 上工作。但我添加并使用了slide expandable list view library 来增加我的listvview 的功能。一切正常,但在添加库后,项目点击的涟漪不起作用

getview ()of my list adapter

public View getView(final int position, View view, ViewGroup parent)
{
    final ViewHolder holder;
    if(view == null){
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.testlistitem,null);
        holder.listHeading = (TextView) view.findViewById(R.id.beg_list_itemTextView);

        holder.listHash = (TextView) view.findViewById(R.id.listview_hashtags);
        holder.alphabetList = (ImageView) view.findViewById(R.id.beg_list_itemImageView);

        holder.favariteImage = (ImageView) view.findViewById(R.id.favbtn);

        view.setTag(holder);

    }else{
        holder = (ViewHolder) view.getTag();
    }
    CodeList codes = (CodeList) getItem(position);
    holder.listHeading.setText(codeList.get(position).getListHeading());
    holder.listHash.setText(codeList.get(position).getListHashText());
    imageLoader.DisplayImage(codeList.get(position).getAlphabetimg(),
                             holder.alphabetList);


    if (checkFavoriteItem(codes)) {
        holder.favariteImage.setImageResource(R.drawable.favorite);
        holder.favariteImage.setTag("yes");
    } else {
        holder.favariteImage.setImageResource(R.drawable.unfavorite);
        holder.favariteImage.setTag("no");
    }                    


    view.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0){
                Intent intent = new Intent(context, SingleItemView.class);

                //intent.putExtra("listheading",
                //       (codeList.get(position).getListHeading()));
                //intent.putExtra("alphabetimg",
                //              (codeList.get(position).getAlphabetimg()));

                intent.putExtra("demovideo",
                                (codeList.get(position).getDailogdemovideo()));


                context.startActivity(intent);

            }
        });     


    return view;
}

ma​​inactivity oncrate()

listview = (ListView) findViewById(R.id.inter_layoutListView);
        // Pass the results into ListViewAdapter.java
        adapter = new FinalAdapter(InterActivity.this,
                                      codelist);

        listview.setAdapter(new SlideExpandableListAdapter(adapter, R.id.expandbutton, R.id.expandable));

【问题讨论】:

  • 请通过此链接:tutorialsbuzz.com/2015/12/…
  • 顺便说一句,在每个 getView 中使用 setOnclickListener 非常难看!您的代码消耗大量内存!
  • @Vyacheslav 我尝试在我的 mainactivity 中实现 onitemclicklistener,但没有发现任何涟漪,所以尝试了这种方法,但仍然没有涟漪。顺便感谢您的建议。以前不知道
  • Riple 效果基于 Layout 的 Layout。我猜您使用的 lib 不是从正确的类继承,或者用其他东西覆盖了样式。
  • @DanielBo 我认为图书馆相当陈旧。所以它可能会压倒风格。我该如何更改?

标签: android listview ripple


【解决方案1】:
public class ASummary extends Activity implements OnClickListener{

//.....
@Override
    protected void onCreate(Bundle savedInstanceState) {

        ///...
adapter = new FinalAdapter(InterActivity.this,
                                      codelist,this);
///...
}
//....
@Override
    public void onClick(View v) {
        int id = (Integer) v.getTag();

      }

}

FinalAdapter类中创建构造函数和OnClickListener变量:

private OnClickListener listener;
FinalAdapter(Context ctx,codelist, OnClickListener listener ){

///super....

this.listener = listener;
}

然后在getView: 使用

view.setTag(position);
view.setOnClickListener(listener);

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2017-05-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多