2017-02-18 69 views
0

我想MySQL數據加載到列表視圖爲碎片 包含以前存儲到MySQL數據庫中的圖像和文本視圖 這是我的代碼,但它給我的錯誤中getLayoutInflater 我該怎麼辦這個 ?如何MySQL的列表視圖中的數據加載到片段

public class NewsFragment extends Fragment { 
    RequestQueue requestQueue; 
    String url = "http://giclub.esy.es/show.php"; 
    ListView listView; 
    View myView; 

    ArrayList<NewsList> Newslistitem = new ArrayList<NewsList>(); 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     myView = inflater.inflate(R.layout.newslayout,container,false); 
     listView = (ListView) myView.findViewById(R.id.listView); 

     requestQueue = Volley.newRequestQueue(this.getActivity()); 
     JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 

         try { 
          JSONArray jsonArray = response.getJSONArray("allstudents"); 
          for (int i = 0; i < jsonArray.length(); i++) { 
           JSONObject respons = jsonArray.getJSONObject(i); 
           String id = respons.getString("id"); 
           String name = respons.getString("name"); 
           String info = respons.getString("info"); 
           String img = respons.getString("img"); 
           Newslistitem.add(new NewsList(id,name, info, img)); 
          } 
          listAllItme(); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e("VOLLEY", "ERROR"); 
      } 
     } 
     ); 
     requestQueue.add(jsonObjectRequest); 
     return myView; 
    } 
    public void listAllItme() { 
     listAdpter lA = new listAdpter(Newslistitem); 
     listView.setAdapter(lA); 
    } 

    /* public void onClick(View view) { 
     Intent intent = new Intent(this.getActivity(),NewsFragment.class); 
     startActivity(intent); 
     finish(); 
    }*/ 
    class listAdpter extends BaseAdapter { 
     ArrayList<NewsList> listA = new ArrayList<NewsList>(); 

     public listAdpter(ArrayList<NewsList> listA) { 
      this.listA = listA; 
     } 
     @Override 
     public int getCount() { 
      return listA.size(); 
     } 
     @Override 
     public Object getItem(int position) { 
      return listA.get(position).id; 
     } 
     @Override 
     public long getItemId(int position) { 
      return position; 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      LayoutInflater layoutInflater = getLayoutInflater(); 
      View view = layoutInflater.inflate(R.layout.news_itm, null); 
      //TextView id = (TextView) view.findViewById(R.id.textView_id); 
      TextView name = (TextView) view.findViewById(R.id.textaddress); 
      TextView info = (TextView) view.findViewById(R.id.text_info); 
      ImageView img = (ImageView) view.findViewById(R.id.newspic); 
      // id.setText(listA.get(position).id); 
      name.setText(listA.get(position).name); 
      info.setText(listA.get(position).info); 
      Picasso.with(NewsFragment.this.getActivity()).load("http://giclub.esy.es/image/" + listA.get(position).img).into(img); 
      return view; 
     } 
    } 
} 

NewsList.java

public class NewsList { 
    public String id; 
    public String name; 
    public String info; 
    public String img; 

    public NewsList(String id ,String name, String info, String img) { 
     this.id = id; 
     this.name = name; 
     this.info = info; 
     this.img = img; 
    } 
} 

news_itm.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:id="@+id/newspic" 
      android:layout_width="200dp" 
      android:layout_height="200dp" 
      android:layout_gravity="center" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentEnd="true" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:text="اقرأ المزيد" 
      android:textAlignment="center" 
      android:id="@+id/text_info" 
      android:layout_gravity="center" 
      android:layout_centerVertical="true" 
      android:layout_alignParentStart="true" 
      android:layout_marginStart="35dp" /> 

     <TextView 
      android:text="TextView" 
      android:layout_width="150dp" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="27dp" 
      android:textSize="15dp" 
      android:id="@+id/textaddress" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentStart="true" /> 

    </RelativeLayout> 

</LinearLayout> 

我該怎麼辦呢?

回答

0

首先我會建議分裂UI和數據訪問的代碼,然後在不同的威脅加載數據,而不是在UI線程

嘗試用虛擬數據先加載屏幕檢查佈局和屏幕工作正常,然後將其與保存的數據

+0

我是初學者,此代碼適用於連接到「DAL」活動不是片段的我想要的列表視圖在片段 – Amr93

+0

http://www.vogella.com/tutorials/AndroidListView/article.html#listfragments – Bennya

+0

thx的問題,但它很容易使listview充滿了離線數組數據,,,我想加載這個數據來自mysql數據庫 – Amr93

0

您正在膨脹的newslayout雖然您的佈局是**news_itm.xml**

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
myView inflater.inflate(R.layout.**newslayout**,container,false);