我有一个ListView,Fragment我希望更新ListView从另一个返回时的数据Activity.我已经覆盖了该onResume()方法Fragment,修改了数据Adapter并调用notifyDataSetChanged()了Adpater但不知何故ListView没有更新.我怀疑我的身体有问题Adapter,但我似乎无法找到错误.
这是我的代码Adpater:
class ManualExceptionsListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private TextView mManualExceptions;
SwitchCompat mSwitch;
TextView name;
final Context context = getActivity();
final SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
int a;
int ifUse = 0;
ManualExceptionsListAdapter(LayoutInflater inflater) {
mInflater = inflater;
}
@Override
public int getCount() {
return (mPermanentManualException.size()+mContactsExceptionNumber.size());
}
@Override
public Object getItem(int i) {
return null; …Run Code Online (Sandbox Code Playgroud) android android-listview android-viewholder recycler-adapter android-recyclerview
现在是我处理查看点击次数的第三天.我最初使用ListView,然后我切换到RecyclerView.我已经android:onclick为我的每个控件添加了元素row_layout,我在这样处理它们MainActivity:
public void MyMethod(View view) {}
Run Code Online (Sandbox Code Playgroud)
在我的旧ListView实现中,我已经完成setTag(position)了通过在其中MyMethod执行此操作来获取它:
Integer.parseInt(view.getTag().toString())
Run Code Online (Sandbox Code Playgroud)
这很好地没有问题.虽然现在我正在处理RecyclerView并被迫使用ViewHolder,但没有提供setTag方法.搜索了2个小时后,我发现人们使用setTag这样的:
holder.itemView.setTag(position)
Run Code Online (Sandbox Code Playgroud)
这是可以接受的.虽然当我尝试MyMethod使用该行从函数中获取值时:
Integer.parseInt(view.getTag().toString())
Run Code Online (Sandbox Code Playgroud)
应用程序崩溃.我已经阅读了适配器内部onclick处理的几个实现,但是我必须使用它,MainActivity因为我使用的是该活动所特有的东西.
TL; DR我想以MainActivity简单的方式将点击的行的位置发送给我.
编辑:我为这个混乱道歉,因为我的主题不是很彻底.我有一个RecyclerView适配器.适配器链接到我的row_layout.这个row_layoutxml有一个根LinearLayout.里面有一个TextView,另一个LinearLayout(有两个TextViews)和一个Button(为简单起见).我不想像处理点击RecylerView那样处理点击ListView.所以,我决定添加一个android:onclick用于每个控制,然后链接TextView和LinearLayout到一个单一的方法和链接Button(和将来ButtonS)其独特的方法.我缺少的是我希望能够在我的每个接收方法上说出立场MainActivity.如果我必须链接来自适配器的所有内容并进入MainActivity单个onclick处理程序,那就这样吧.虽然,我怎么知道哪个控件触发了点击? …
我的应用程序有一个包含 recyclerview 的聊天活动。这个 recyclerview 包含两个项目,分别显示用户收到的消息和用户发送的消息。
用户收到的消息按预期从 recyclerview 的左侧对齐,但用户发送的消息没有按预期从 recyclerview 的右侧对齐。
这是它现在的样子:蓝色消息是收到的消息,灰色消息是发送的消息。

我需要 ui 的外观:
我希望灰色消息从屏幕右侧对齐,如下图所示。

代码
activity.java 文件:
public class IMActivity extends AppCompatActivity{
private RecyclerView recyclerView;
private ImAdapter imAdapter;
private List<ChatMsg> chatMsgList = new ArrayList<>();
Socket mSocket;
EditText etIM;
ImageButton ibSend;
String otherUserName;
List<Msg> msgList;
DBAct db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_im);
Toolbar toolbar = (Toolbar)findViewById(R.id.imlist_toolbar);
setSupportActionBar(toolbar);
etIM = (EditText)findViewById(R.id.et_im);
recyclerView = (RecyclerView)findViewById(R.id.rv_im);
imAdapter = new ImAdapter(chatMsgList);
LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(imAdapter);
db = …Run Code Online (Sandbox Code Playgroud) android android-layout android-viewholder android-recyclerview
我有一个名为 的片段MyRequestFragment,其中包含使用我的适配器类RecyclerView将数据绑定到RecyclerViewusing的片段onBindViewHolder()。
现在每个ViewHolder我都有一个按钮。并且每次单击按钮都会POST向服务器发出请求并更新值。我的问题是,如果出现成功响应,我需要隐藏特定ViewHolder.
实际问题是runOnUiThread()不接受onBindViewHolder()
runOnUiThread(new Runnable() {
public void run() {
}
});
Run Code Online (Sandbox Code Playgroud)
我如何在ViewHolder创建/绑定方法中调用它。
我的onBindViewHolder()完整代码如下供参考。
@Override
public void onBindViewHolder(MyServiceViewHolder holder, int position) {
final MyServiceBean myServiceBean = serviceList.get(position);
holder.service_name.setText(myServiceBean.getService_name());
holder.last_updated.setText("Job Updated Date : " +myServiceBean.getDate(myServiceBean.getUpdated_at()));
holder.created_date.setText("Job Created Date : " + myServiceBean.getDate(myServiceBean.getCreated_at()));
holder.status.setText(myServiceBean.getStatus());
holder.service_note.setText("Service Note : " + myServiceBean.getService_note());
if (myServiceBean.getService_note().toString().isEmpty())
holder.service_note.setVisibility(View.GONE);
switch (myServiceBean.getStatus().toString().toLowerCase()) {
case "completed":
holder.status.setBackgroundColor(Color.GREEN);
break; …Run Code Online (Sandbox Code Playgroud) 我正在为片段构建ViewHolder和适配器,并且当我尝试为ViewHolder创建OnClick时,我没有传递任何上下文。没有activity距离getActivity(),我可以使用,并且p0!!.context也没有itemView.context工作,要么。我应该从哪里获取我的上下文,以及如何引用它?
package com._________.criminalintent
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
class CrimeListFragment: Fragment() {
private var mCrimeRecyclerView: RecyclerView? = null
private var mAdapter: CrimeAdapter? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
// fragment_crime_list.xml has a RecyclerView element = crime_recycler_view
// inflate the fragment into the activity
val view = inflater!!.inflate(R.layout.fragment_crime_list, container, false)
// grab the recyclerView …Run Code Online (Sandbox Code Playgroud) 请原谅我的英语。
我的清单包含 100 项。每个项目由两个复选框组成,每次单击复选框时我都想滚动到下一个项目。
请给我最佳答案链接 如果这个问题已经被回答
这是我的自定义适配器
public class CustomAdapter extends
RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
private ArrayList answerFirst;
private ArrayList answerSecond;
private Context context;
public CustomAdapter(Context context, ArrayList questionList, ArrayList
answerFirst, ArrayList answerSecond) {
this.context = context;
this.answerFirst = answerFirst;
this.answerSecond = answerSecond;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v =
LayoutInflater.from(parent.getContext()).inflate(R.layout.test_items,
parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position)
{
holder.firstanswer.setText(answerFirst.get(position).toString());
holder.secondanswer.setText(answerSecond.get(position).toString());
}
@Override
public int getItemCount() {
return questionList.size(); …Run Code Online (Sandbox Code Playgroud) android custom-adapter android-viewholder android-recyclerview
我试图根据某些用户输入更改RecyclerView中项目视图的透明度。
if (quantity>0) {
holder.itemView.setAlpha((float) 1);
} else {
holder.itemView.setAlpha((float) 0.65);
}
Run Code Online (Sandbox Code Playgroud)
当数量> 0时,将alpha从0.65更改为1效果很好。但是在另一种情况下,反向操作无效。调试时,它清楚地显示了经过这条线。holder.itemView.setAlpha((float) 0.65);但是,alpha不会减少。关于发生了什么的任何线索?
transparency android android-view android-viewholder android-recyclerview
我有一个RecyclerView Adapter,我想将其设置onClick为整个项目,但此代码以及当我也尝试使用myViewHolder.view.setOnClickListener(..)两者时,仍然只听复选框的单击。
我怎样才能设置onClickListener为整体item?
public class DeliveryPointSelectionAdapter extends RecyclerView.Adapter<DeliveryPointSelectionAdapter.MyViewHolder> {
private static final String TAG = MyViewHolder.class.getSimpleName();
private List<DeliveryPoint> deliveryPointList;
interface OnItemCheckListener {
void onItemCheck(DeliveryPoint deliveryPoint);
void onItemUncheck(DeliveryPoint deliveryPoint);
}
@NonNull
private OnItemCheckListener onItemCheckListener;
public DeliveryPointSelectionAdapter(List<DeliveryPoint> deliveryPointList, @NonNull OnItemCheckListener onItemCheckListener) {
this.deliveryPointList = deliveryPointList;
this.onItemCheckListener = onItemCheckListener;
}
@NonNull
@Override
public DeliveryPointSelectionAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.dialog_select_deliverypoints_to_change_item, viewGroup, false);
return new MyViewHolder(view);
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) android onclicklistener android-viewholder android-recyclerview
RecyclerView 文档提到了一个公共方法 - getBindingAdapterPosition。 https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder#getBindingAdapterPosition()
但我似乎无法找到它。
我错过了什么?
我需要使用ViewHolder基于listview项目的偶数和奇数位置来扩展两个布局.在偶数位置,我需要不同的布局,在奇数位置,另一个具有相同的元素但布局不同.我实现了它,然而,它给了我在不同位置的随机布局,而不管它们的位置如何.需要做些什么来解决它.谢谢.
public SimpleAdapter(ArrayList<WishListData> wishDataList, Context context,
ListView swipelistview) {
super(context, android.R.layout.simple_list_item_1, wishDataList);
notifyDataSetChanged();
SimpleAdapter.wishListData = wishDataList;
this.swipelistview = swipelistview;
mPreferences = new Preferences(context);
SCREEN_WIDTH = mPreferences.getScreenWidth();
SCREEN_HEIGHT = mPreferences.getScreenHeight();
mFunctions = new UserFunctions();
this.context = context;
imageloader1 = new ImageLoader1(context);
userImageLoader = new UserImageLoader(context);
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
View row = convertView;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
System.out.println("position "+ position);
if ((position % …Run Code Online (Sandbox Code Playgroud)