انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت یه لیست دینامیک از سرور با Recyclerview

ساخت یه لیست دینامیک از سرور با Recyclerview

#1
من چند وقته درگیره این دستورم تو هر سایت اموزشی گشتم درست توضیح ندادن یا در پایان نتیجه نمیداد
من میخام یه لیست کاربر سفارشی بسازم که اطلاعاتشو از سرور بخونه و تو برنامه جاگذاری کنه با Recyclerview
دیگه کلافم کرده میشه راهنماییم کنید
نتیجه فایل پی اچ پی ک نوشتم اینجوری میشه
{"users":[{"name":"j",
"photopro":"./profile.png",
"wonnum":"0"
,"age":"0000-00-00"
,"gender":"0"}
,{"name":"jj",
"photopro":"./profile.png",
"wonnum":"0"
,"age":"0000-00-00"
,"gender":"0"
}],
"success":1}
پاسخ

ساخت یه لیست دینامیک از سرور با Recyclerview

#2
(۱۳۹۵/۰۲/۲۶, ۰۶:۵۰ ب.ظ)salahcode نوشته: من چند وقته درگیره این دستورم تو هر سایت اموزشی گشتم درست توضیح ندادن یا در پایان نتیجه نمیداد
من میخام یه لیست کاربر سفارشی بسازم که اطلاعاتشو از سرور بخونه و تو برنامه جاگذاری کنه با Recyclerview
دیگه کلافم کرده میشه راهنماییم کنید
نتیجه فایل پی اچ پی ک نوشتم اینجوری میشه
{"users":[{"name":"j",
"photopro":"./profile.png",
"wonnum":"0"
,"age":"0000-00-00"
,"gender":"0"}
,{"name":"jj",
"photopro":"./profile.png",
"wonnum":"0"
,"age":"0000-00-00"
,"gender":"0"
}],
"success":1}
پاسخ

ساخت یه لیست دینامیک از سرور با Recyclerview

#3
اول باید یه کلاس جدا برای تحلیل داده جیسون بسازی به هر نامی و کد های زیر داخل بریزی


import android.util.Log;

import org.json.JSONArray;
import org.json.JSONObject;

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

public class AdsParser
{
public List<HashMap<String , Object>> parse( String json )
{
List<HashMap<String , Object>> all = new ArrayList<>();

try
{
JSONObject jObj = new JSONObject( json );

JSONArray jArr = jObj.getJSONArray( "ads" );

for( int i = 0; i < jArr.length(); i ++ )
{
JSONObject temp = jArr.getJSONObject( i );

HashMap<String , Object> ads = new HashMap<String , Object>();

ads.put( "users" , temp.getString( "users" ) );
ads.put( "age" , temp.getString( "age" ) );

ads.put( "photopro" , R.drawable.download );
ads.put( "photopro_path" , temp.getString( "photopro" ) );
ads.put( "wonnum" , temp.getString( "wonnum" ) );

ads.put( "gender" , temp.getString( "gender" ) );



}

}
catch ( Exception e )
{
/*
* Log.i( "younes" , "error in AdsParser in parse() -> " + e.toString() );
*/
}

return ( all );
}
}
کلاس بالا یه لیست هش مپ برمیگردونه که ساده ترین روش اطلاعات گرفتن ازش استفاده از یه حلقه میباشد . ولی قبلش باید
داخل کلاس که میخوای ازش استفاده کنید یه نمونه بسازی مثلا ما داخل کلاس ماین اکتیوتی اصلی میخوایم ازش استفاده کنیم داخل لای ایکس ام ال خود کلاس ماین اکتیوتی که یه لیست ویو بزار و یه ایکس ام ال دیگم احتیاج داریم .بسازش داخلش یه ایمیج ویو بزار و تکس ویو به اندازه اون ابجکت های که دریافت میکنی مثلا ابجکت سنش فعلا با لیست ویو نمایشش بده بد
که یاد گرفتی با هر چی که دلت خواست نمایش بده
خلاصه داخل قسمت جاواش کد های زیر بنویس



import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class ads extends AppCompatActivity
{


private int current_page = 0;

private List<HashMap<String , Object>> all = new ArrayList<>();

private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);


/*------------------------------------------------------------*/



lv = (ListView) findViewById( R.id.ads_list );



jsonparser parser = new jsonparser ();

all.addAll( parser.parse(params[0]) );

//ارایه پایین برای داده های دریافتیه

String[] from = { "photopro" , "users" , "age" , "wonnum" , "gender" };

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

int[] to = { R.id.photopro , R.id.users , R.id.age ,
R.id.wonnum , R.id.gender };
// داخل این اداپتر اون لایه لیکس ام ال دومی که ساختی رو بزار من اینجا اسمشو گذاشتم روو

SimpleAdapter abc= new SimpleAdapter(
getBaseContext() , all , R.layout.row , from , to
);

//خوب حلا یه اداپتر داریم با نامه ای بی سی
//الان نمایش میده اطلاعاتو ولی عکس شم باید دانلود بشه که کد های زیر برای دانلود عکسشه

lv.setAdapter( abc );

for (int i = 0; i < adapter.getCount(); i++)
{
HashMap<String , Object> hm =
(HashMap<String , Object>) adapter.getItem( i );

String imgURL = (String) hm.get("image_path");

HashMap<String , Object> forDownload = new HashMap<>();

forDownload.put( "image_path" , imgURL );
forDownload.put( "position" , i );
InputStream myStream;

String imgUrl = (String) params[0].get( "image_path" );
int position = (Integer) params[0].get( "position" );

try
{
URL url = new URL( imgUrl );

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setDoInput(true);

connection.connect();

myStream = connection.getInputStream();

File cacheDirectory = getBaseContext().getCacheDir();

File temp = new File( cacheDirectory.getPath()
+ "/photopro_" + position + "_" + current_page + ".png" );

FileOutputStream outStream = new FileOutputStream( temp );

Bitmap b = BitmapFactory.decodeStream( myStream );

b.compress(Bitmap.CompressFormat.PNG, 100, outStream);

outStream.flush();

outStream.close();

HashMap<String , Object> bitmap = new HashMap<>();

bitmap.put( "photopro" , temp.getPath() );
bitmap.put( "position" , position );
String photopro = (String) result.get( "photopro" );

int position = (Integer) result.get( "position" );

SimpleAdapter abc = (SimpleAdapter) lv.getAdapter();

HashMap<String , Object> hm = (HashMap<String , Object>)
abc.getItem( position );

hm.put( "photopro" , photopro );

abc.notifyDataSetChanged();




//دوست عزیز حالا فهمیدی چرا کسی جواب نمیده چون خود این کار یه پروژه کاملا به احتمال زیاد ازش چیزس نفهمی که ایمیل بده برات اموزش رایگان انلاین بزارم یا بسازمش
خرجش صلواته
younes372@gmail.com



}


}
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان