Android 在recycler listview项目之间添加了较大的空间
每当调用Activity Result时,Recycler listview会在项目之间添加额外的空间。它发生在每个列表视图中 我的java代码Android 在recycler listview项目之间添加了较大的空间,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,每当调用Activity Result时,Recycler listview会在项目之间添加额外的空间。它发生在每个列表视图中 我的java代码 package com.kahoindia.dev.fragments; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingAction
package com.kahoindia.dev.fragments;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import com.kahoindia.dev.activities.KaHOAppController;
import com.kahoindia.dev.activities.KaHOComposeTaskActivity;
import com.kahoindia.dev.activities.KaHOTaskDetailActivity;
import com.kahoindia.dev.activities.R;
import com.kahoindia.dev.customclasses.KaHOTextView;
import com.kahoindia.dev.customclasses.RecyclerTouchListener;
import com.kahoindia.dev.helpers.Const;
import com.kahoindia.dev.helpers.DateUtility;
import com.kahoindia.dev.helpers.LayoutUtility;
import com.kahoindia.dev.interfaces.KaHOIRecyclerViewItemClickListener;
import com.kahoindia.dev.interfaces.KaHOViewInterface;
import com.kahoindia.dev.managerclasses.KaHObTicket;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.HashMap;
/**
* Created by KaHO PC-1 on 12-08-2016.
*/
public class KaHOPendingTaskFragment extends KaHOFragment {
private RecyclerView mRecyclerView;
private JSONArray mPendingTaskArray;
private boolean mOnLoad = false;
private PendingTaskAdapter mAdapter;
private FloatingActionButton mBtnAssignTask;
private boolean mRecExists;
private int mPageNum;
private int mHolderPos;
private PendingTaskAdapter.ViewHolder mHolder;
private ProgressBar mProgressbar;
private String mTotalPages;
private KaHOTextView mTxtNoData;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_task_pending_list, container, false);
try {
mRecyclerView = (RecyclerView) view.findViewById(R.id.pendingList);
mBtnAssignTask = (FloatingActionButton) view.findViewById(R.id.assignTask);
mProgressbar = (ProgressBar) view.findViewById(R.id.progress_bar);
mTxtNoData = (KaHOTextView) view.findViewById(R.id.txtNoData);
mRecExists = true;
mOnLoad = true;
mPageNum = 1;
mHolderPos = 0;
mAdapter = new PendingTaskAdapter();
mPendingTaskArray = new JSONArray();
mRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), mRecyclerView, new KaHOIRecyclerViewItemClickListener() {
@Override
public void onClick(View view, int position) {
try {
JSONObject selectedObject = mPendingTaskArray.getJSONObject(position);
Intent intent = new Intent(getActivity(), KaHOTaskDetailActivity.class);
intent.putExtra("taskObject", selectedObject.toString());
startActivityForResult(intent, 1);
} catch (Exception e) {
e.getStackTrace();
}
}
@Override
public void onLongClick(View view, int position) {
}
}));
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
int currentFirstVisibleItem;
int currentVisibleItemCount;
int currentScrollState;
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
this.currentScrollState = newState;
isScrollCompleted();
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
this.currentFirstVisibleItem = dx;
this.currentVisibleItemCount = dy;
}
private void isScrollCompleted() {
try {
if (this.currentVisibleItemCount > 0 && mRecExists && this.currentScrollState == RecyclerView.SCROLL_STATE_IDLE) {
mPageNum++;
mOnLoad = false;
if (mPageNum <= Integer.parseInt(mTotalPages)) {
mHolder = (PendingTaskAdapter.ViewHolder) mRecyclerView.findViewHolderForAdapterPosition(mHolderPos);
mHolder.pBar.setVisibility(View.VISIBLE);
getPendingTask();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
mBtnAssignTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), KaHOComposeTaskActivity.class);
startActivityForResult(intent, 2);
}
});
getPendingTask();
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
public void getDataOnLoad() {
if (mOnLoad) {
getPendingTask();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.setActivityTag(getActivity().getLocalClassName());
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
mHolder = null;
mOnLoad = true;
mPendingTaskArray = new JSONArray();
mPageNum = 1;
getPendingTask();
} else if (requestCode == 2 && resultCode == Activity.RESULT_OK) {
mHolder = null;
mOnLoad = true;
mPendingTaskArray = new JSONArray();
mPageNum = 1;
getPendingTask();
}
}
private void getPendingTask() {
HashMap<String, String> params = new HashMap<>();
params.put("ayCode", KaHOAppController.getCurrentAY());
params.put("Mine", "1");
params.put("Others", "0");
params.put("Is_Pending", "1");
params.put("PageNo", String.valueOf(mPageNum));
params.put("NoOfRec", String.valueOf(Const.mNumOfRecords));
if (mOnLoad) {
mProgressbar.setVisibility(View.VISIBLE);
}
KaHObTicket kaHObTicket = new KaHObTicket();
kaHObTicket.getTask(params, "GetTaskList", mContext, new KaHOViewInterface() {
@Override
public void viewHandler(Object viewResponse) {
JSONObject responseObject = (JSONObject) viewResponse;
try {
if (!mOnLoad && mHolder != null) {
mHolder.pBar.setVisibility(View.GONE);
} else {
mProgressbar.setVisibility(View.GONE);
}
String msg = responseObject.getString("msg");
String cusmsg = responseObject.getString("cusmsg");
String code = responseObject.getString("code");
if (msg.equals("Success") && code.equals(Const.SUCCESS_CODE)) {
JSONArray array = responseObject.getJSONArray("GetTaskList");
for (int i = 0; i < array.length(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
if (i == 0) {
mTotalPages = jsonObject.getString("Total_Pages");
}
mPendingTaskArray.put(jsonObject);
}
mRecExists = true;
generateList();
} else {
mRecExists = false;
if (mOnLoad) {
mTxtNoData.setVisibility(View.VISIBLE);
mTxtNoData.setText(cusmsg);
}
}
mOnLoad = false;
} catch (Exception e) {
mProgressbar.setVisibility(View.GONE);
e.printStackTrace();
}
}
});
}
private void generateList() {
try {
if (mOnLoad) {
LayoutUtility.setRecyclerListView(mRecyclerView, mContext);
mRecyclerView.setAdapter(mAdapter);
} else {
mAdapter.notifyDataSetChanged();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public class PendingTaskAdapter extends RecyclerView.Adapter<PendingTaskAdapter.ViewHolder> {
public class ViewHolder extends RecyclerView.ViewHolder {
public KaHOTextView txtAssignedBy, txtAssignedTo, txtTitle, txtDate;
public ProgressBar pBar;
public ViewHolder(View view) {
super(view);
txtAssignedBy = (KaHOTextView) view.findViewById(R.id.txtAssignedBy);
txtAssignedTo = (KaHOTextView) view.findViewById(R.id.txtAssignedTo);
txtTitle = (KaHOTextView) view.findViewById(R.id.txtTitle);
txtDate = (KaHOTextView) view.findViewById(R.id.txtDate);
pBar = (ProgressBar) view.findViewById(R.id.progressBar);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.template_task_list, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
try {
mHolderPos = position;
JSONObject taskObject = mPendingTaskArray.getJSONObject(position);
holder.txtAssignedBy.setText(taskObject.getString("Created_By_Name"));
holder.txtAssignedTo.setText(taskObject.getString("Assigned_To_Name"));
holder.txtTitle.setText(taskObject.getString("Title"));
holder.txtDate.setText(DateUtility.changeDateFormat(taskObject.getString("Date"), "dd/MM/yyyy", "dd MMM"));
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int getItemCount() {
return mPendingTaskArray.length();
}
}
}
包com.kahoindia.dev.fragments;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ProgressBar;
导入com.kahoindia.dev.activities.KaHOAppController;
导入com.kahoindia.dev.activities.KaHOComposeTaskActivity;
导入com.kahoindia.dev.activities.KaHOTaskDetailActivity;
导入com.kahoindia.dev.activities.R;
导入com.kahoindia.dev.customclasses.KaHOTextView;
导入com.kahoindia.dev.customclasses.RecyclerTouchListener;
导入com.kahoindia.dev.helpers.Const;
导入com.kahoindia.dev.helpers.DateUtility;
导入com.kahoindia.dev.helpers.LayoutUtility;
导入com.kahoindia.dev.interfaces.kahoi回收服务项目ClickListener;
导入com.kahoindia.dev.interfaces.kahovieinterface;
导入com.kahoindia.dev.managerclasses.kahobicket;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入java.util.HashMap;
/**
*由KaHO PC-1于2016年8月12日创建。
*/
公共类KaHOFragment扩展了KaHOFragment{
私人回收视图mRecyclerView;
私有JSONArray mPendingTaskArray;
私有布尔mOnLoad=false;
私人公寓;
私有浮动操作按钮mBtnAssignTask;
私有布尔mRecExists;
私家车;
私营企业;
私有PendingTaskAdapter.ViewHolder mHolder;
私人ProgressBar mProgressbar;
私有字符串mtotalPage;
private KaHOTextView mTxtNoData;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u task\u pending\u list,container,false);
试一试{
mRecyclerView=(RecyclerView)view.findviewbyd(R.id.pendingList);
mBtnAssignTask=(FloatingActionButton)view.findViewById(R.id.assignTask);
mProgressbar=(ProgressBar)view.findViewById(R.id.progress\u bar);
mTxtNoData=(KaHOTextView)view.findviewbyd(R.id.txtNoData);
mRecExists=true;
mOnLoad=true;
mPageNum=1;
mHolderPos=0;
mAdapter=newpendingtaskadapter();
mPendingTaskArray=new JSONArray();
addOnItemTouchListener(新的RecyclerTouchListener(getActivity(),mRecyclerView,新的KahoiRecyclerServiceItemClickListener()){
@凌驾
公共void onClick(视图,int位置){
试一试{
JSONObject selectedObject=mPendingTaskArray.getJSONObject(位置);
Intent Intent=new Intent(getActivity(),KaHOTaskDetailActivity.class);
intent.putExtra(“taskObject”,selectedObject.toString());
startActivityForResult(意向,1);
}捕获(例外e){
e、 getStackTrace();
}
}
@凌驾
仅长按公共无效(视图,int位置){
}
}));
mrecycleView.addOnScrollListener(新的RecycleView.OnScrollListener(){
int currentFirstVisibleItem;
int currentVisibleItemCount;
int当前状态;
@凌驾
CrollStateChanged上的公共无效(RecyclerView RecyclerView,int newState){
super.onScrollStateChanged(recyclerView、newState);
this.currentScrollState=newState;
IsCrollCompleted();
}
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
this.currentFirstVisibleItem=dx;
this.currentVisibleItemCount=dy;
}
私有无效IsCrollCompleted(){
试一试{
如果(this.currentVisibleItemCount>0&&mRecExists&&this.currentScrollState==RecyclerView.SCROLL\u STATE\u IDLE){
mPageNum++;
mOnLoad=false;
如果(mPageNum从模板任务列表中删除progressbar.xml实际上,您将适配器设置为回收视图的位置是错误的。您必须在中使用空数组列表创建方法时,以及在startActivityResult
中更新列表时,在中设置适配器内部您只需notifyDataSetChanged
。以供参考
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:custom="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.kahoindia.dev.customclasses.KaHOTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/kaho_listview_label_heading"
android:text="From : "
custom:CustomTextViewFont="@string/kaho_segoeui_semi_light_font"/>
<com.kahoindia.dev.customclasses.KaHOTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/kaho_listview_label_heading"
android:id="@+id/txtAssignedBy"
custom:CustomTextViewFont="@string/kaho_segoeui_semi_light_font"/>
<com.kahoindia.dev.customclasses.KaHOTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/kaho_listview_label_heading"
android:text="To : "
custom:CustomTextViewFont="@string/kaho_segoeui_semi_light_font"
android:paddingLeft="10dp"/>
<com.kahoindia.dev.customclasses.KaHOTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/kaho_listview_label_heading"
android:id="@+id/txtAssignedTo"
custom:CustomTextViewFont="@string/kaho_segoeui_semi_light_font"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="5dp"
android:weightSum="2">
<com.kahoindia.dev.customclasses.KaHOTextView
android:id="@+id/txtTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:singleLine="true"
style="@style/kaho_content_small_textview_style"
custom:CustomTextViewFont="@string/kaho_segoeui_regular_font"/>
<com.kahoindia.dev.customclasses.KaHOTextView
android:id="@+id/txtDate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/kaho_content_small_textview_style"
custom:CustomTextViewFont="@string/kaho_segoeui_regular_font"
android:gravity="right" />
</LinearLayout>
<include
android:id="@+id/progressBar"
layout="@layout/lazy_loading_progress_bar"/>
</LinearLayout>
</LinearLayout>
内部onCreate
mAdapter = new PendingTaskAdapter(new ArrayList<YourListClassName>(); // empty arraylist
mRecyclerView.setAdatper(mAdapter);
在PendingTaskAdatper中创建一个方法setData,以获取更新的列表,如下所示
private void setData(List<YourListClassName> updatedList){
mUpdatedList = updatedList;}
private void setData(列表更新列表){
mUpdatedList=updatedList;}
现在您应该可以得到您的预期输出了@Karthik Thunga
为了最小化两个RecycleView项目之间的空间,您必须编写
让我们看看下面的代码片段
mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(homeActivity)
.color(Color.TRANSPARENT)
.sizeResId(R.dimen.padding_5)
.build());
只需尝试删除包含的progressBar或将其可见性设置为GONE,我认为空间就是因为progressBar。不..我删除了progressBar并检查了仍然存在的问题..style=“@style/kaho_content\u small\u textview\u style”custom:CustomTextViewFont=“@string/kaho_segoui\u regular\u font”你能给我们看看这个文件吗?我很乐意帮助你
private void setData(List<YourListClassName> updatedList){
mUpdatedList = updatedList;}
mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(homeActivity)
.color(Color.TRANSPARENT)
.sizeResId(R.dimen.padding_5)
.build());