这可能与RecyclerView的项目重叠吗?
我正在尝试使用LinearLayoutManager.
我的要求与LinearLayoutManager中的要求相同,我只需要从上到下重叠内部的项目.(像堆叠卡)
我通过使用ListView 看到了一些变体.因此,我认为在RecyclerView中也是可能的.但是,经过一些时间的探索,我觉得要花费相当长的时间来实现一个自定义布局管理器并对此有相当程度的理解.(我查看了Dave的帖子关于构建自定义LayoutManager)
所以,现在我想我可能只需要根据我的要求使用ListView变体,而不是处理自定义布局管理器的这么多复杂性.
但是,我只需要让里面的物品重叠.我觉得可能还有其他方向我还没有意识到.如果除了ListView varient和Custom Layout Manager 之外还有其他任何内容,请告诉我.
我还将在下面发布我的发现.
我有一个RecyclerView显示两种,View一种代表用户出版物,另一种代表一种事件出版物.两者都有共同的元素,例如TextView显示时间戳的元素.所以我创建了一个PublicationViewHolder将TextView时间戳记转换为变量并加载它的方法.我的问题是适配器最初加载正确的值,但是当我向下滚动并再次向上滚动时,位置中的值会被其他位置的值更改.这是代码:
public class PublicationViewHolder extends RecyclerView.ViewHolder {
private TextView vTimeStamp;
public PublicationViewHolder(View itemView) {
super(itemView);
this.vTimeStamp = (TextView) itemView.findViewById(R.id.txt_view_publication_timestamp);
}
public void load(Publication publication, int i) {
load(publication);
try {
if (Publication.TYPE_USER_PUBLICATION == publication.getType()) {
load((UserPublication) publication);
} else if (Publication.TYPE_EVENT_PUBLICATION == publication.getType()) {
load((EventPublication) publication);
}
} catch (ClassCastException e) {
throw new RuntimeException("Publication type cast fail. See PublicationViewHolder.");
}
}
public void load(Publication publication) {
vTimeStamp.setText(DateFormatter.getTimeAgo(publication.getTimeStamp()));
}
public …Run Code Online (Sandbox Code Playgroud) 我有一个包含13个项目的列表(虽然可以添加或删除项目),位置0-12.当首次显示包含RecyclerView的片段时,用户只能看到位置0到7(位置7只有一半可见).在我的适配器中,Log每次视图持有者被绑定/绑定(如果语法适用于此,则为idk)并记录其位置.
适配器
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
Log.d(TAG, "onBindViewHolder() position: " + position);
...
}
Run Code Online (Sandbox Code Playgroud)
从我Log看到0-7的位置是绑定的:
我有一个selectAll()方法,ViewHolder通过适配器位置获取每个.如果返回holder的不是null我,则使用返回holder来更新视图以显示它已被选中.如果返回的持有者是null我调用selectOnBind()一个方法来标记该位置的视图更新,以显示它在绑定时被选中而不是实时,因为它当前未显示:
public void selectAll() {
for (int i = 0; i < numberOfItemsInList; i++) {
MyAdapter.ViewHolder holder = (MyAdapter.ViewHolder)
mRecyclerView.findViewHolderForAdapterPosition(i);
Log.d(TAG, "holder at position " + i + " is " + holder);
if (holder != null) {
select(holder);
} else …Run Code Online (Sandbox Code Playgroud) android android-viewholder recycler-adapter android-recyclerview
我正在购买购物车应用程序,项目显示如下.有一个加号,减号(+/-)按钮来选择数量.
如果产品数量发生变化,我需要将"productname"和"quantity"传递给主要活动,以便我可以使用它们来准备最终购物车.我有一些使用数据库或一些内容提供商的建议,
我不知道怎么做..请帮忙
MainActivity.java
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Window;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
RecycleAdapter recycleAdapter;
List<HashMap<String, String>> onlineData;
ProgressDialog pd;
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyle_view);
toolbar= (Toolbar) findViewById(R.id.anim_toolbar);
setSupportActionBar(toolbar);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getBaseContext()); …Run Code Online (Sandbox Code Playgroud) 我试图在RecyclerView一个StaggeredGridLayoutManager带有两列的a中显示三个(至少是我遇到问题的情况).第一项跨越两行.这是它的样子:

现在,我将项目"项目2"移到顶部.这是我在适配器中调用的代码(这是我编写的一个示例,用于演示我在一个更复杂的项目中遇到的问题):
private int findById(int id) {
for (int i = 0; i < items.size(); ++i) {
if (items.get(i).title.equals("Item " + id)) {
return i;
}
}
return -1;
}
// Moving the item "Item 2" with id = 2 and position = 0
public void moveItem(int id, int position) {
final int idx = findById(id);
final Item item = items.get(idx);
if (position != idx) {
items.remove(idx);
items.add(position, item);
notifyItemMoved(idx, position);
//notifyDataSetChanged();
}
}Run Code Online (Sandbox Code Playgroud)
之后,阵列很好:[Item …
我已经使用图像,标题和复选框填充了recyclerView.我有两个问题.
如何在单击imageview或整个回收项目时选中复选框.
我必须通过从recyclerview获取所有选中的项目来进行下一个活动.
我的布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:contentDescription="Interests"
android:scaleType="centerCrop"
android:src="@drawable/ic_yash_dp" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_gravity="bottom"
android:layout_margin="5dp"
android:layout_marginTop="24dp"
android:background="@drawable/rounded_corners"
android:gravity="bottom"
android:padding="5dp"
android:text="GYM"
android:textAlignment="center"
android:textColor="@color/white" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/checkBox"
android:layout_margin="2dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的适配器:
@Override
public void onBindViewHolder(RecyclerViewHolder holder, int position) {
final InterestBean model = arrayList.get(position);
final int pos = position;
RecyclerViewHolder mainHolder = (RecyclerViewHolder) holder;// holder
Bitmap image = BitmapFactory.decodeResource(context.getResources(),
model.getImage());// This will convert drawbale image into …Run Code Online (Sandbox Code Playgroud) 我开发了一些聊天应用程序,我可以发送和接收消息.但问题是每当我发送或接收消息时,回收站视图都不会滚动到顶部,以便消息显示在键盘上方.
我使用了上面提到的回收站视图android.support.v7.widget.RecyclerView.
android android-activity recycler-adapter android-recyclerview
我正在开发一个应用程序,我正在尝试使用RecyclerView和recycler适配器填充列表.但是当我快速滚动列表时,有时列表项中的值会在列表项之间进行洗牌.这有一个已知的解决方案吗?
我已经使用RecyclerView在我的图像编辑应用程序中显示缩略图.它的每个项目都包含一个ImageView(缩略图)和一个textView.在我的应用程序中,我想在点击时仅突出显示当前选定的缩略图.浏览SO上的所有相关帖子但找不到更好的解决方案.
我的适配器类
public class FiltersAdapter extends RecyclerView.Adapter<FiltersAdapter.ViewHolder> {
private Context mContext;
private List<Type> mDataSet;
private Uri selectedPhoto;
public enum Type {
Original,
Grayscale,
Sepia,
Contrast,
Invert,
Pixel,
Sketch,
Swirl,
Brightness,
Vignette
}
public FiltersAdapter(Context context, List<Type> dataSet, Uri selectedPhoto) {
mContext = context;
mDataSet = dataSet;
this.selectedPhoto = selectedPhoto;
}
@Override
public FiltersAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(mContext).inflate(R.layout.list_item_layout, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(FiltersAdapter.ViewHolder holder, int position) {
switch (mDataSet.get(position)) …Run Code Online (Sandbox Code Playgroud)