ورود

View Full Version : مشکل این کد چیه؟ (لیست ویو در اندروید)



Louai_M
جمعه 02 مرداد 1394, 19:48 عصر
سلام
من با استفاده از جیسون یک سری اطلاعات را در قالب آرایه از بانک اطلاعاتی فراخوانی می کنم تا اینجا درسته و هیچ مشکلی نداره اما وقتی تو اندروید کد های زیر را برای نمایش اطلاعات در یک لیست ویو نوشتم صفحه بازمیشه ولی هیچ چیزی نشون داده نمیشه مشکل از کجاست

من از اندروید استودیو استفاده می کنم.

یک سؤال دیگه چرا وقتی تو اندروید استودیو ListActivity رو extends میکنیم تو اجرا خطا میگیره و فقط ActionBarActivity رو قبول میکنه

با تشکر


import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;

/**
* Created by Novin Pendar on 07/16/2015.
*/
public class newsActivity extends ActionBarActivity {

String myJson;
private static final String TAG_RES = "result";
private static final String TAG_TITR = "titr";
private static final String TAG_CONTENT = "content";
static JSONArray jObj = null;
private String msg;

JSONArray Articles = null;

ArrayList<HashMap<String,String>> ArticlesList;

ListView list;

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

list = (ListView) findViewById(R.id.dataget);
ArticlesList = new ArrayList<HashMap<String,String>>();
new NetCheck().execute();
}

private class NetCheck extends AsyncTask<String,String,Boolean>
{
private ProgressDialog nDialog;

@Override
protected void onPreExecute(){
super.onPreExecute();
nDialog = new ProgressDialog(newsActivity.this);
nDialog.setTitle("Checking Network");
nDialog.setMessage("Loading..");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);

nDialog.show();
}
/**
* Gets current device state and checks for working internet connection by trying Google.
**/
@Override
protected Boolean doInBackground(String... args){

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;

}
@Override
protected void onPostExecute(Boolean th){

if(th == true){
nDialog.dismiss();
getData();
}
else{
nDialog.dismiss();
Toast.makeText(getApplicationContext(), "Error in Network Connection", Toast.LENGTH_SHORT).show();
}
}
}

public void showList(){


try{
JSONObject jsonObj = new JSONObject(myJson);
Articles = jsonObj.getJSONArray(TAG_RES);

for(int i=0;i<Articles.length();i++){
JSONObject c = Articles.getJSONObject(i);
String titr = c.getString(TAG_TITR);
String content = c.getString(TAG_CONTENT);

HashMap<String,String> persons = new HashMap<String,String>();

persons.put(TAG_TITR,titr);
persons.put(TAG_CONTENT,content);

ArticlesList.add(persons);
}

ListAdapter adapter = new SimpleAdapter(
newsActivity.this, ArticlesList, R.layout.list_item,
new String[]{TAG_TITR,TAG_CONTENT},
new int[]{R.id.titr, R.id.content}
);
list.setAdapter(adapter);


}catch (JSONException e) {
e.printStackTrace();
}
}

public void getData(){

class GetDataJSON extends AsyncTask<String, Void, String>{

private ProgressDialog pDialog;
private InputStream inputStream = null;
private String page_output = "";

@Override
protected void onPreExecute() {
super.onPreExecute();

pDialog = new ProgressDialog(newsActivity.this);
pDialog.setTitle("درحال اتصال به سرور");
pDialog.setMessage("لطفاً منتظر بمانید ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@Override
protected String doInBackground(String... params) {

try{
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://***.*****/server.php");

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try{
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();

String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
inputStream.close();
page_output = sb.toString();

}catch (Exception e){
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONArray(page_output);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

return page_output;
}

@Override
protected void onPostExecute(String page_output){
pDialog.dismiss();
myJson=page_output;
try{
JSONObject jsonObj = new JSONObject(myJson);
Articles = jsonObj.getJSONArray(TAG_RES);

for(int i=0;i<Articles.length();i++){
JSONObject c = Articles.getJSONObject(i);
String titr = c.getString(TAG_TITR);
String content = c.getString(TAG_CONTENT);

HashMap<String,String> persons = new HashMap<String,String>();

persons.put(TAG_TITR,titr);
persons.put(TAG_CONTENT,content);

ArticlesList.add(persons);
}

ListAdapter adapter = new SimpleAdapter(
newsActivity.this, ArticlesList, R.layout.list_item,
new String[]{TAG_TITR,TAG_CONTENT},
new int[]{R.id.titr, R.id.content}
);
list.setAdapter(adapter);
}catch (JSONException e) {
e.printStackTrace();
}
}
}
GetDataJSON g = new GetDataJSON();
g.execute();

}

s3rv3r
جمعه 02 مرداد 1394, 22:01 عصر
اینکه صفحه باز میشه ولی هیچی نمایش نمیده به خاطر اینه که Try Catch استفاده کردی

LogCat رو قرار بدید . تو پارس کردن json مشکل داری احتمالا

Louai_M
جمعه 02 مرداد 1394, 22:48 عصر
چطور میتونم بهمم خطا یا اشکال پیدا کرده و LogCat چی هست (من تازه کارم) لطفاً راهنمایی کنیید

s3rv3r
شنبه 03 مرداد 1394, 00:05 صبح
برا اینکه بدون لاگ کت چی هست یه نگا به این تاپیک بغلی بنداز. فورس کلوز دیتابیس
http://barnamenevis.org/showthread.php?502432-%D9%81%D9%88%D8%B1%D8%B3-%DA%A9%D9%88%D8%B2-%D8%AF%D8%B1-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3

باید خطاهای لاگ کت رو ببینیم. تمام catch ها رو در logcat چاپ میکنه اگه خطایی رخ داده باشه راحت متوجه میشی

ehsanh22
یک شنبه 04 مرداد 1394, 17:45 عصر
اولا این اکتیویتی کامل نیست و کد ناقصش رو گذاشتی برای همین نمیشه چیزی متوجه شد. ثانیا لاگ کت رو بزار

Louai_M
یک شنبه 01 شهریور 1394, 11:59 صبح
در کل جواب میده ولی نمایش اطلاعات داخل لیست ویو انجام نمیشه و میگه نوع اکتویتی باید listarray باشد در حالی که من در اینجا از actionbaractivity ارث بری می کنم