2015-01-07 64 views
0

這裏是y代碼,用於通過php從mysql數據庫中選擇圖像和文本。它顯示在滾動視圖的線性圖層中。我想要做的就是更改顯示的對齊方式。我嘗試了很多方法,但不工作好,我是Android新手,有人請幫助我。如何在循環的兩側顯示圖像和文本?

JAVA

import java.io.BufferedReader; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.net.UnknownHostException; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.annotation.SuppressLint; 
import android.app.ActionBar.LayoutParams; 
import android.app.Fragment; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Color; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
import android.widget.Toast; 

@SuppressLint("NewApi") public class News_and_events extends Fragment { 
    private String jsonResult; 
    private String url = "http://192.168.2.7/crescentnews/select.php"; 
    HttpPost httppost; 
    StringBuffer buffer; 
    HttpResponse response; 
    HttpClient httpclient; 
    List<NameValuePair> nameValuePairs; 
    ProgressDialog dialog = null; 
    ImageView img; 
     Bitmap bitmap; 
     ProgressDialog pDialog; 


    // alert dialog manager 
    AlertDialogManager alert = new AlertDialogManager(); 

    // Internet detector 
    ConnectionDetector cd; 

    InputStream is=null; 
    String result=null; 
     String line=null; 
     int code; 

    public News_and_events(){} 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     pDialog = new ProgressDialog(getActivity()); 
     View rootView = inflater.inflate(R.layout.activity_news_and_events, container, false); 

     cd = new ConnectionDetector(rootView.getContext()); 

     // Check if Internet present 
     if (!cd.isConnectingToInternet()) { 
      // Internet Connection is not present 
      alert.showAlertDialog(getActivity(), 
        "Internet Connection Error", 
        "Please connect to working Internet connection", false); 
      // stop executing code by return 
      //return.rootView; 
      return rootView; 
     } 

     accessWebService(); 
     return rootView; 
    } 

    // Async Task to access the web 
    private class JsonReadTask extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 
      List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1); 


     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost(params[0]); 
     try { 

     httppost.setEntity(new UrlEncodedFormEntity(nameValuePair)); 
     HttpResponse response = httpclient.execute(httppost); 
     jsonResult = inputStreamToString(
      response.getEntity().getContent()).toString(); 
     } 

     catch (ClientProtocolException e) { 
     e.printStackTrace(); 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 
     return null; 
     } 

     private StringBuilder inputStreamToString(InputStream is) { 
     String rLine = ""; 
     StringBuilder answer = new StringBuilder(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 

     try { 
     while ((rLine = rd.readLine()) != null) { 
     answer.append(rLine); 
     } 
     } 
     catch (IOException e) { 
     // e.printStackTrace(); 
     Toast.makeText(getActivity().getApplicationContext(), 
      "Error..." + e.toString(), Toast.LENGTH_LONG).show(); 
     } 
     return answer; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
     display(); 
     } 
    }// end async task 

    public void accessWebService() { 
     JsonReadTask task = new JsonReadTask(); 
     // passes values for the urls string array 
     task.execute(new String[] { url }); 
    } 

    // build hash set for list view 
    public void display() { 


     try { 
     JSONObject jsonResponse = new JSONObject(jsonResult); 
     JSONArray jsonMainNode = jsonResponse.optJSONArray("news_details"); 
     LinearLayout MainLL= (LinearLayout)getActivity().findViewById(R.id.newslayout); 
     //LinearLayout headLN=(LinearLayout)findViewById(R.id.headsection); 

     for (int i = 0; i < jsonMainNode.length(); i++) { 
      JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 
      final String head = jsonChildNode.optString("title"); 
      final String details = jsonChildNode.optString("text"); 
      final String date = jsonChildNode.optString("date"); 
      final String image = jsonChildNode.optString("img"); 
      //final String time = jsonChildNode.optString("time"); 
      //img = new ImageView(this.getActivity()); 
      //new LoadImage().execute("http://192.168.2.7/crescentnews/images/"+image); 

      img = new ImageView(this.getActivity()); 
      // Toast.makeText(getActivity(),image, Toast.LENGTH_LONG).show(); 

      LoadImage ldimg=new LoadImage(); 
      ldimg.setImage(img); 
      ldimg.execute("http://192.168.2.7/crescentnews/images/"+image); 


      TextView headln = new TextView(this.getActivity()); 
      headln.setText(head); // News Headlines 
      headln.setTextSize(16); 
      headln.setTextColor(Color.BLACK); 
      headln.setGravity(Gravity.CENTER); 
      headln.setBackgroundColor(Color.parseColor("#ffcd14")); 
      // headln.setBackgroundResource(R.drawable.menubg); 
      headln.setPadding(0, 20, 0, 0); 
      // headln.setHeight(50); 
      headln.setClickable(true); 


      TextView dateln = new TextView(this.getActivity()); 
      dateln.setText(date); // News Headlines 
      dateln.setTextSize(12); 
      dateln.setTextColor(Color.BLACK); 
      dateln.setGravity(Gravity.RIGHT); 
      //dateln.setBackgroundColor(Color.parseColor("#f20056")); 
      dateln.setBackgroundColor(0x00000000); 
      dateln.setPadding(0, 0, 10, 10); 
      dateln.setWidth(100); 
      dateln.setClickable(true); 



      View sep=new View(this.getActivity()); 
      sep.setBackgroundColor(Color.parseColor("#252525")); 
      sep.setMinimumHeight(10); 

      TextView detailsln = new TextView(this.getActivity()); 
      detailsln.setText(details); // News Details 
      detailsln.setTextSize(12); 
      detailsln.setTextColor(Color.BLACK); 
      detailsln.setGravity(Gravity.CENTER); 
      detailsln.setPadding(10, 10, 10, 10); 

      int width = LayoutParams.WRAP_CONTENT; 
      int height = 200; 
      LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height); 
      img.setLayoutParams(parms); 
      parms.gravity = Gravity.CENTER; 
      img.setPaddingRelative (15, 15, 15, 15); 

      MainLL.addView(headln); 
      MainLL.addView(dateln); 
     // MainLL.addView(photo); 
      MainLL.addView(img); 
      MainLL.addView(detailsln); 
      MainLL.addView(sep); 

      img.setClickable(true); 

      // img.buildDrawingCache(); 
      // final Bitmap bmap = img.getDrawingCache(); 
      headln.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        Intent intent = new Intent(getActivity().getApplicationContext(),InnerNewsAndEvents.class); 
        intent.putExtra("head",head.toString()); 
        intent.putExtra("details",details.toString()); 
        intent.putExtra("date",date.toString()); 
        intent.putExtra("image", image); 
        startActivity(intent);  

       } 
      }); 

      dateln.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
       Intent intent = new Intent(getActivity().getApplicationContext(),InnerNewsAndEvents.class); 
       intent.putExtra("head",head.toString()); 
       intent.putExtra("details",details.toString()); 
       intent.putExtra("date",date.toString()); 
       intent.putExtra("image", image); 
       startActivity(intent);  
       } 
      }); 

      img.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        // TODO Auto-generated method stub 
       Intent intent = new Intent(getActivity().getApplicationContext(),InnerNewsAndEvents.class); 
       intent.putExtra("head",head.toString()); 
       intent.putExtra("details",details.toString()); 
       intent.putExtra("date",date.toString()); 
       intent.putExtra("image", image); 
       startActivity(intent);  
       } 
      }); 

      detailsln.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
         // TODO Auto-generated method stub 
        Intent intent = new Intent(getActivity().getApplicationContext(),InnerNewsAndEvents.class); 
        intent.putExtra("head",head.toString()); 
        intent.putExtra("details",details.toString()); 
        intent.putExtra("date",date.toString()); 
        intent.putExtra("image", image); 
        startActivity(intent);  
        } 
       }); 
     } 
     } catch (JSONException e) { 
     Toast.makeText(getActivity().getApplicationContext(), "Error" + e.toString(), 
     Toast.LENGTH_SHORT).show(); 
     } 
     } 

    private class LoadImage extends AsyncTask<String, String, Bitmap> { 
     ImageView img; 
        @Override 
         protected void onPreExecute() { 
          super.onPreExecute(); 

          pDialog.setMessage("Loading Image ...."); 
          pDialog.show(); 


        } 
     public void setImage(ImageView img){ 
     this.img=img; 
     } 

     protected Bitmap doInBackground(String... args) { 
      try { 
       bitmap = BitmapFactory.decodeStream((InputStream)new URL(args[0]).openStream()); 
       } 
      catch (Exception e) { e.printStackTrace(); } 
      return bitmap; 
     } 

     protected void onPostExecute(Bitmap image) { 
       if(image != null){ 
        img.setImageBitmap(image); 

        pDialog.dismiss(); 
       } 
       pDialog.dismiss(); 
     } 

    } 

    public static boolean isInternetReachable() 
    { 
     try { 
      //make a URL to a known source 
      URL url = new URL("http://www.google.com"); 

      //open a connection to that source 
      HttpURLConnection urlConnect = (HttpURLConnection)url.openConnection(); 

      //trying to retrieve data from the source. If there 
      //is no connection, this line will fail 
      Object objData = urlConnect.getContent(); 

     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
      return false; 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
      return false; 
     } 
     return true; 
    } 
} 

XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    android:orientation="vertical" 
    > 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent"![enter image description here][1] 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:baselineAligned="false" 

     > 

     <LinearLayout 
       android:id="@+id/newslayout" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:background="#ffffff" 

       >  

      </LinearLayout> 


    </LinearLayout> 



    </ScrollView> 

    </LinearLayout> 

所需的顯示風格 http://wptrafficanalyzer.in/blog/wp-content/uploads/2012/09/listview_with_sdcard_screenshot.png

+0

那麼首先定義一個佈局在XML中的一行。請參考以下鏈接:http://developer.android.com/guide/topics/ui/layout/listview.html – Shahzeb

回答

0

您對佈局的設計方法是錯誤的。當您在設計中需要這樣的佈局時,您可以使用列表查看。您可以瞭解更多有關的ListView這裏:

所有你需要使用列表視圖來實現這樣的設計的

http://developer.android.com/guide/topics/ui/layout/listview.html

+0

你可以修改我的代碼嗎? – Ashfaq

+0

你需要遵循一些教程來實現Listview。您還需要爲ListView實現Adapter,並在從JSON獲取數據後,將該適配器設置爲ListView。 Web上有數十個Listview示例。其中一些是: http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=9 http://www.vogella.com/tutorials/AndroidListView/article.html – Shahzeb

相關問題