آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

طریقه ساخت یک لیست ویو آنلاین در اندرویید استدیو (حل مشکل)

Miaad  9 سال پیش  9 سال پیش
0 0

سلام دوستان اول کد های هرکلاسی که نوشتم رو میزارم تا اگر دوستانی که حداقل تا این  پایه طریقه ارتباط با سرور رو در اندرویید استدیو نمیدونن یاد بگیرن             

کد قسمت کلاس webservice    و بعد  کد کلاس  adapter     و کد کلاس mainactivity      و در آخر  کد کلاس product  در اینجا قرار میدهم

در آخر بگم که هنگام اجرای پروژه من با یه ارور مواجه میشم که علتش رو نمیدونم واقعا اگر ممکن هست کسی بلد باشه کمک کنه 


public class Product {
public String title;
public String desc;
public Double price;

public Product(String title, String desc, Double price) {
this.title = title;
this.desc = desc;
this.price = price;
}
}
 

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

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

import java.util.ArrayList;


public class MainActivity extends Activity {

public static String dataServer = "";
public ListView lst_product;


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

//Button btn_server = (Button) findViewById(R.id.btn_server);
//final TextView txt_server = (TextView) findViewById(R.id.txt_server);
ListView lst_product = (ListView) findViewById(R.id.lst_product);
new Webservice("http://192.168.0.126/note_srver/index.php").execute();
GetJsonArray();

}

public void GetJsonArray(){
try {
JSONArray jsonArray = new JSONArray(dataServer);
ArrayList<Product> products = new ArrayList<>();
ProductAdapter productAdapter = new ProductAdapter(MainActivity.this, R.layout.list_view,products);
lst_product.setAdapter(productAdapter);
for (int i=0; i<jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
int id = jsonObject.getInt("id");
String title = jsonObject.getString("title");
String desc = jsonObject.getString("desc");
Double price = jsonObject.getDouble("price");

products.add(new Product(title,desc,price));
productAdapter.notifyDataSetChanged();
Log.i("json"," ANDROID ID : "+id+ ", ANDROID Title : " +title+ ", ANDROID DESC: " +desc+ ", ANDROID PRICE: " +price);
}
} catch (JSONException e) {
e.printStackTrace();
}


}
}
 


import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;



public class ProductAdapter extends ArrayAdapter{
private int resourceId;
private Activity activity;
private ArrayList<Product> productArrayList;


public ProductAdapter(Activity activity, int resourceId, ArrayList<Product> object) {
super(activity, resourceId, object);

this.activity = activity;
this.resourceId = resourceId;
this.productArrayList =object;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
view = this.activity.getLayoutInflater().inflate(this.resourceId,null);
ImageView img_listview = (ImageView)view.findViewById(R.id.img_listview);
TextView txt_title = (TextView) view.findViewById(R.id.txt_title);
TextView txt_desc = (TextView) view.findViewById(R.id.txt_desc);
TextView txt_price = (TextView) view.findViewById(R.id.txt_price);

Product product = productArrayList.get(position);
txt_title.setText(product.title);
txt_desc.setText(product.desc);
txt_price.setText(product.price+"");


return super.getView(position, convertView, parent);
}
}
 


import android.os.AsyncTask;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;


public class Webservice extends AsyncTask {
public String link = "";
public String user;

public Webservice (String link){
this.link=link;
}


@Override
protected Object doInBackground(Object[] params) {
try {
URL mylink = new URL(link);
URLConnection connect = mylink.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connect.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;

while ((line=reader.readLine()) !=null){
builder.append(line);
}
MainActivity.dataServer = builder.toString();
} catch (java.io.IOException e) {
e.printStackTrace();
}
return null;
}
}

 
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Miaad  9 سال پیش
0 0

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

0 0
به جای نوشتن این همه کد میتونی از gson برای پارس کردن جیسون هات استفاده کنی. (9 سال پیش)
0 0
دیباگ کن ببین مشکلش چیه ، فک کنم راه خوبی باشه :) (9 سال پیش)
0 0
ببخشید این gson چی هست میشه یه توضیحی بدید بنده متوجه نیستم ، منظورتون همون json هست یا حالتی چیزی دیگه ای هست :/ ؟ دیباگ کردم ولی بازم برطرف نشدش :/ (9 سال پیش)
0 0
توی اکثر پروژه های تحت نت معمولا لازم هستش که یک فایل Json را دریافت کنیم و اطلاعات را از آن بخونیم (به اصطلاح parse کنیم ) یکی از بهترین لایبرری ها برای پارس کردن و حتی ساختن فایل های Json لایبرری Gson می هستش . نحوه کار کردن با اون خیلی سادس و خیلی به سرعت کار کردن شما میتونه کمک بکنه. (9 سال پیش)
0 0
من چک کردم مشکلی ندیدم ولی یبار خودم این مشکل داشتم از لیست ویو بود که layout_width و layout_height روی Wrap content بود (9 سال پیش)
0 0
نه اون حالتی که شما گفتید رو چک کردم ، اون برای زمانی هست که لیست ویو آفلاین باشه بازم ممنون بابت نظرتون ، با یه دستو if هرچنتا کارد ویو اضافه کنی ولی این آنلاین واقعا نمیدونم چرا اینقدر مشکل بود،واقعا ممنون به این فروم که دوستانی که بلد هستن اصلا یک دقیقه نمیان به بچه های تازه کار یه سری چیزهای پیش پا افتاده رو یاد بدن ، (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .