У меня есть список RecyclerView который состоит из большого количества CardView которые заполняются динамически внутри CardView есть кнопка Button. по нажатию по CardView открывается детальная информация , а по нажатию на Button нужно поставить лайк этой записи не открывая детальную информацию. Проблема в том что по клику на Button открывается детальная информация как по нажатию на CardView.Button отрабатывает как положено только если нажать на копку и подержать палец на копке как бы лонг клик, но нужно что бы обычный клик.
CardView
`
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
card_view:cardCornerRadius="12dp"
card_view:cardElevation="5dp"
card_view:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4"
android:orientation="vertical">
<TextView
android:id="@+id/postTitle"
android:textSize="21sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/postBody"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/postUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/postLike"
android:text="@string/like_post"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
`
RecyclerItemClickListener
`public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { public interface OnItemClickListener { void onItemClick(View view, int position); }
private OnItemClickListener mListener;
private GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}`
AdapterRecycler
`public class AdapterRecycler extends RecyclerView.Adapter { private List postsList = new ArrayList<>(); private Context context; private IContentProvider iContentProvider = IContentProvider.getInstance();
public void setPostList(List<Posts> postsList, Context context) {
this.postsList.clear();
this.postsList.addAll(postsList);
this.context = context;
notifyDataSetChanged();
}
public Posts getItem(int i) {
return postsList.get(i);
}
@Override
public int getItemCount() {
return postsList.size();
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_post, parent, false);
ItemViewHolder itemViewHolder = new ItemViewHolder(v);
return itemViewHolder;
}
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
final Posts posts = getItem(position);
Users users = iContentProvider.getUserInfo(posts.getUserId());
holder.postBody.setText(posts.getBody());
holder.postUserName.setText(users.getUserName());
holder.postTitle.setText(posts.getTitle());
if (posts.getLike() == null) {
holder.like.setEnabled(true);
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iContentProvider.likePost(posts.getId());
}
});
} else {
holder.like.setEnabled(false);
}
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
TextView postTitle;
TextView postBody;
TextView postUserName;
Button like;
ItemViewHolder(View itemView) {
super(itemView);
postBody = (TextView) itemView.findViewById(R.id.postBody);
postUserName = (TextView) itemView.findViewById(R.id.postUserName);
like = (Button) itemView.findViewById(R.id.postLike);
postTitle = (TextView) itemView.findViewById(R.id.postTitle);
}
}
}`
Сделайте элемент который состоит отдельно из CardView и поверх него отдельно кнопка, чтобы карточка не перехватывала нажатие кнопки.
Кнопка не должна быть внутри карточки.
Я так думаю )
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу програму на JavaFX которая должна импортировать данные с SQLite таблицы и заносить их в TableView, на писал следующий код, но даные не импортруются
Здравствуйте,из-за большой нагрузки, пару-тройку сотен в минуту, (да-да, она действительно такая и даже больше, в зависимости от времени суток),...
Имеем interface CharSequenceДанный интерфейс содержит в себе следующие методы: