close
تبلیغات در اینترنت
recycler view,آموزش استفاده از recycler view,کد recycler view,پروژه re
صفحه اصلی پرشین استک

{ پرشین استک }

به دنیای برنامه نویسی خوش آمدید
|


پرشین استک تنها یک سایت نیست ، بلکه یک پروژه همگانی می باشد .


تعداد مطالب :
142


تعداد توسعه دهندگان :
11


تاریخ امروز :
یکشنبه 02 اردیبهشت 1397

به کانال تلگرام ما بپیوندید


×

لیست سوالات من

افزودن

چگونه می توان در اندروید ارتفاع item view های Recycler view را ، با کلیک بر روی item view تغییر داد ؟

من یک fragment با یک search view دارم و همچنین یک recycler view که می توانید یک item را در یک زمان انتخاب کنید . ارتفاع item ممکن است بسته به محتوای نمایش داده شده متفاوت باشد . زمانی که روی یکی از item های recycler view کلیک می شود ، من رنگ پس زمینه آن item را تغییر می دهم و سپس item انتخاب شده را در یک متغیر برای استفاده بعدی ذخیره می کنم . با این حال ، هنگامی که item انتخاب شده است ، ارتفاع آن نیز به طور چشمگیری تغییر می کند . مثل اینکه جزئیات item به طور غیر مستقیم فرو می ریزد یا مصرف می شود . من فکر می کنم این کار با استفاده مجدد از سلول انجام می شود .

این ویدئو مشکل را نشان می دهد . 

این کلاس adapter من است :

 

public class CodeListAdapter extends RecyclerView.Adapter<CodeListAdapter.ViewHolder>{

private List<Code> codes;
private Code selectedCode;
private int selectedPosition = -1;

public CodeListAdapter(Code selectedCode){
this.selectedCode = selectedCode;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_code, parent,false);
return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder,int position){
Code code = codes.get(position);
holder.codeIdentifier.setText(code.getCodeIdentifier());

if (code.getCodeType() == null || code.getCodeType().isEmpty()){
holder.codeType.setVisibility(View.GONE);
}else{
holder.codeType.setText(code.getCodeType());
}

if (code.getCodeDescription() == null || code.getCodeDescription().isEmpty()){
holder.codeDescription.setVisibility(View.GONE);
}else{
holder.codeDescription.setText(code.getCodeDescription());
}

if (selectedCode == code){
holder.itemLayout.setBackgroundResource(R.color.colorEmphasis);
}else{
holder.itemLayout.setBackgroundResource(R.color.colorWhite);
}

final ViewHolder viewHolder = holder;
holder.itemLayout.setOnClickListener(newView.OnClickListener(){
@Override
public void onClick(View itemView){
int currentPosition = viewHolder.getAdapterPosition();
if (currentPosition != selectedPosition){
selectedCode = codes.get(currentPosition);
notifyItemChanged(selectedPosition);
selectedPosition = currentPosition;
notifyItemChanged(selectedPosition);
}
}
});
}

@Override
public int getItemCount(){
return codes.size();
}

public void setCodes(List<Code> codes){
this.codes = codes;
}

public Code getCode(){
return selectedCode;
}

static class ViewHolder extends RecyclerView.ViewHolder{
View itemLayout;
TextView codeIdentifier;
TextView codeType;
TextView codeDescription;

ViewHolder(View view){
super(view);
itemLayout = view.findViewById(R.id.item_layout);
codeIdentifier = (TextView) view.findViewById(R.id.codeIdentifier);
codeType = (TextView) view.findViewById(R.id.codeType);
codeDescription = (TextView) view.findViewById(R.id.codeDescription);
}
}
}

 

 

فایل item Layout ها :

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black75PercentColor"
android:paddingBottom="1dp">

<RelativeLayout
android:id="@+id/item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingBottom="6dp"
android:paddingEnd="12dp"
android:paddingStart="12dp"
android:paddingTop="6dp">

<TextView
android:id="@+id/codeIdentifier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"/>

<TextView
android:id="@+id/codeType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/codeIdentifier"/>

<TextView
android:id="@+id/codeDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/codeType"/>
</RelativeLayout>
</FrameLayout>

 

 

کد فایل Layout :

 

<?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"
android:orientation="vertical">

<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:queryHint="@string/key_search_code"/>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/colorPrimary"
android:paddingEnd="12dp"
android:paddingStart="12dp">

<TextView
android:id="@+id/headerTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="Codes"
android:textColor="@color/white"
android:textSize="20sp"/>

</RelativeLayout>

<mdbilling.ca.mdbilling_android.Customs.ExtendedRecyclerView
android:id="@+id/diagnosticCodeRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<RelativeLayout
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingEnd="12dp"
android:paddingStart="12dp">

<TextView
android:id="@+id/messageHeader"
style="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"/>

<TextView
android:id="@+id/messageBody"
style="?android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/messageHeader"
android:layout_marginTop="6dp"
android:textAlignment="center"/>
</RelativeLayout>

</LinearLayout>

 

 

Customs.ExtendedRecyclerView در اینجا چیزی نیست جز یک توسعه از recycler view که توانایی نمایش ویو @android:id/empty را زمانی که dataset در adapter خالی است ، دارد .

 

پاسخ 1 :

کد MainActivity :

 

package info.androidhive.recyclerview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity{
private List<Movie> movieList = new ArrayList<>();
private RecyclerView recyclerView;
private MoviesAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

recyclerView = (RecyclerView) findViewById(R.id.recycler_view);

mAdapter = new MoviesAdapter(movieList);

recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.addItemDecoration(new DividerItemDecoration(this,LinearLayoutManager.VERTICAL));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);


recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView,new RecyclerTouchListener.ClickListener(){
@Override
public void onClick(View view,int position){
Movie movie = movieList.get(position);
Toast.makeText(getApplicationContext(), movie.getTitle()+" is selected!",Toast.LENGTH_SHORT).show();
}


@Override
public void onLongClick(View view,int position){
}
}));

prepareMovieData();
}

private void prepareMovieData(){
Movie movie = new Movie("Mad Max: Fury Road","Action & Adventure","2015");
movieList.add(movie);

movie = new Movie("Inside Out","Animation, Kids & Family","2015");
movieList.add(movie);

movie = new Movie("Star Wars: Episode VII - The Force Awakens","Action","2015");
movieList.add(movie);

movie = new Movie("Shaun the Sheep","Animation","2015");
movieList.add(movie);

movie = new Movie("The Martian","Science Fiction & Fantasy","2015");
movieList.add(movie);

movie = new Movie("Mission: Impossible Rogue Nation","Action","2015");
movieList.add(movie);

movie = new Movie("Up","Animation","2009");
movieList.add(movie);

movie = new Movie("Star Trek","Science Fiction","2009");
movieList.add(movie);


movie = new Movie("The LEGO Movie","Animation","2014");
movieList.add(movie);

movie = new Movie("Iron Man","Action & Adventure","2008");
movieList.add(movie);

movie = new Movie("Aliens","Science Fiction","1986");
movieList.add(movie);

movie = new Movie("Chicken Run","Animation","2000");
movieList.add(movie);

movie = new Movie("Back to the Future","Science Fiction","1985");
movieList.add(movie);

movie = new Movie("Raiders of the Lost Ark","Action & Adventure","1981");
movieList.add(movie);

movie = new Movie("Goldfinger","Action & Adventure","1965");
movieList.add(movie);

movie = new Movie("Guardians of the Galaxy","Science Fiction & Fantasy","2014");
movieList.add(movie);

mAdapter.notifyDataSetChanged();
}

}

 

کد adapter :

 

package info.androidhive.recyclerview;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.List;

public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder>{

private List<Movie> moviesList;
private Movie selectedMovie;
private int lastSelectedPosition = -1;

public class MyViewHolder extends RecyclerView.ViewHolder{
public TextView title, year, genre, desc;

public MyViewHolder(View view){
super(view);
title = (TextView) view.findViewById(R.id.title);
genre = (TextView) view.findViewById(R.id.genre);
year = (TextView) view.findViewById(R.id.year);
desc = (TextView) view.findViewById(R.id.desc);
}
}

public MoviesAdapter(List<Movie> moviesList){
this.moviesList = moviesList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.movie_list_row, parent,false);

return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(MyViewHolder holder,int position){
Movie movie = moviesList.get(position);
holder.title.setText(movie.getTitle());
holder.genre.setText(movie.getGenre());
holder.year.setText(movie.getYear());
holder.desc.setText(movie.getGenre()+ movie.getGenre()+ movie.getGenre()+ movie.getGenre()+ movie.getGenre()+ movie.getGenre()+ movie.getGenre());

if (selectedMovie == movie){
holder.itemView.setBackgroundResource(R.color.colorEmphasis);
}else{
holder.itemView.setBackgroundResource(R.color.colorWhite);
}

final RecyclerView.ViewHolder viewHolder = holder;
holder.itemView.setOnClickListener(newView.OnClickListener(){
@Override
public void onClick(View itemView){
int currentPosition = viewHolder.getAdapterPosition();
if (currentPosition != lastSelectedPosition){
selectedMovie = moviesList.get(currentPosition);
notifyItemChanged(lastSelectedPosition);
lastSelectedPosition = currentPosition;
notifyItemChanged(lastSelectedPosition);
}
}
});
}

@Override
public int getItemCount(){
return moviesList.size();
}
}

 

 

Row layout :

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:clickable="true"
android:background="?android:attr/selectableItemBackground"
android:orientation="vertical">

<TextView
android:id="@+id/title"
android:textColor="@color/title"
android:textSize="16dp"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/genre"
android:layout_below="@id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/year"
android:textColor="@color/year"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/desc"
android:textColor="@color/year"
android:layout_width="match_parent"
android:layout_alignTop="@+id/genre"
android:layout_height="wrap_content"/>

</RelativeLayout>

 

این ویدئو می تواند به شما کمک کند .

سورس کد را می توانید به صورت فایل فشرده شده (Zip.) دانلود کنید .

 

پاسخ 2 :

شما باید click listener مربوط به view را در کلاس ViewHolder تنظیم کنید .

 

صفحه اصلی

42

03 / 06 / 1396

PERSIAN STACK


دانلود تمامی API های اندروید

ادامه مطلب

687

چرا گاهی اوقات API موقعیت مکانی سرویس گوگل پلی ، موقعیت مکانی اشتباهی را برمی گرداند ؟

ادامه مطلب

651

چگونه نرم افزار ضبط صدای اندرویدی بسازیم ؟

ادامه مطلب

551

چرا TextView کلمات را با حروف می شکند ؟

ادامه مطلب

511

چگونه Google API برای سطح API 25 را پیدا کنیم ؟

ادامه مطلب

381

چرا وبسایت تجارت الکترونیک Magento 2 در Webview اندروید کار نمی کند ؟

ادامه مطلب

381

دانلود پروژه نمایش جستجوی کتاب برای اندروید

ادامه مطلب

347

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

269

دانلود کتابخانه Retrofit برای اندروید + پروژه

ادامه مطلب

265

دانلود سورس کد بازی اندرویدی Klooni 1010! + فایل APK

ادامه مطلب

261

در تکمیل خودکار اندروید ، دلیل dispatchProvideAutofillStructure() not laid out چیست ؟

ادامه مطلب

247

چرا زمانی که با استفاده از cordova در اندروید 7.0 ، اس ام اس ارسال می کنیم ، با اثتثنای (Exception) امنیتی مواج

ادامه مطلب

245

آیا راهی برای یافتن تغیرات ماه در نمای تقویم اندروید (calendar view) وجود دارد ؟

ادامه مطلب

243

چگونه ارور com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders را در اندروید رفع کنیم ؟

ادامه مطلب

205

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

199

دانلود سورس کد اپلیکیشن اسکنر بارکد برای اندروید + فایل APK

ادامه مطلب

157

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

153

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

147

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

143

دانلودسورس کد اپلیکیشن موزیک پلیر برای اندروید + فایل APK

ادامه مطلب

141

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

یکشنبه 05 آذر 1396

قسمت هفدهم - لیست ها در HTML

ادامه مطلب

یکشنبه 21 آبان 1396

چگونه می توان با استفاده از CSS ، رنگ placeholder را تغییر داد ؟

ادامه مطلب

یکشنبه 21 آبان 1396

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

شنبه 20 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

شنبه 20 آبان 1396

قسمت پانزدهم - عکس ها در HTML

ادامه مطلب

جمعه 19 آبان 1396

قسمت چهاردهم - لینک ها در HTML

ادامه مطلب

یکشنبه 14 آبان 1396

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

یکشنبه 14 آبان 1396

قسمت سیزدهم - CSS در HTML

ادامه مطلب

شنبه 13 آبان 1396

قسمت بیست و پنجم (قسمت آخر) - آموزش ساخت بازی حدس

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و چهارم - آموزش نحوه ی پردازش فایل ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و سوم - برنامه تکمیلی جاوا (6)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و دوم - معرفی آرایه ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و یکم - برنامه تکمیلی جاوا (5)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیستم - معرفی مفهوم وراثت در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت نوزدهم - برنامه تکمیلی جاوا (4)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هجدهم - معرفی عبارات کنترلی در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هفدهم - برنامه تکمیلی جاوا (2-3)

ادامه مطلب

چهارشنبه 10 آبان 1396

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید می توان آیدی موبایل را بدست آورد ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید برنامه تماس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید یک منو ساده بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از برنامه اسکرین شات بگیریم ؟

ادامه مطلب

چگونه می توان در اندروید RTL یا LTR صفحه را ثابت کرد ؟

ادامه مطلب

چگونه می توان در اندروید حالت افقی (landscape) را غیر فعال کرد ؟

ادامه مطلب

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

دانلود سورس کد اپلیکیشن آموزش زبان انگلیسی + فایل APK

ادامه مطلب

چگونه نگذاریم در آغاز اکتیویتی ، EditText فوکوس را بدست آورد ؟

ادامه مطلب

چگونه کیبورد پیش فرض اندروید (Soft Keyboard) را پنهان کرده یا ببندیم ؟

ادامه مطلب

چرا سرعت مجازی ساز اندروید کم است و چگونه می توان سرعت آنرا افزایش داد ؟

ادامه مطلب

تفاوت بین واحد های اندازه گیری "px" , "dp" , "dip" و "sp" چیست ؟

ادامه مطلب

دانلود سورس کد اپلیکیشن آهنگ سازی برای اندروید + فایل APK

ادامه مطلب

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

× برای نظر گذاشتن یا پاسخ دادن به سوالات باید در سایت عضو باشید !

برای حمایت از ما روی بنر های زیر کلیک کنید .

برای سفارش تبلیغات به ما ایمیل بزنید .

×

ارتباط با ما