0

私はアンドロイドの初心者です。私はアンドロイドを始めて2日しか経っていません。リストビューで背景画像を作成するために必要なことをグーグルで調べてみましたが、すべてのコードが複雑すぎて理解できませんでした。投票しないでください。

私のリストビューは、サーバーからの背景画像を表示することになっています。アプリをサーバーに接続しました。画像の表示ができましたurl

これが私のphpコードです:

AndroidHome.php

<?php

$con = mysql_connect("localhost", "load2unet_root", "hzXC3rUm");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("load2unet_db", $con);
$result = mysql_query("SELECT Photo FROM Home ORDER BY HomeID DESC");

while($row = mysql_fetch_assoc($result))
{
    $output[] = $row;
}
print(json_encode($output));
mysql_close($con);

?>

これが私の.javaです

HomeActivity.java

//@SuppressLint("NewApi")

public class HomeActivity extends ListActivity{


//String to display in ListView
String [] hello = {
        "Red",
        "Blue",
        "White",
        "Black",
        "Orange",
        "Pink"
};

ArrayList<String> arrayDataFromServer = new ArrayList<String>();
String array;
String [] thisarray;
@SuppressLint("NewApi")
@Override  
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_home); 

    StrictMode.enableDefaults();
    String result ="";
    InputStream isr = null;
    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new     HttpPost("http://www.mysite.com/android/AndroidHome.php");
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        isr = entity.getContent();

    }
    catch (Exception e)
    {
        Log.e("log_tag", "Error in http connection" +e.toString());
        //resultView.setText("Couldn't connect to database");
    }

    try {
        BufferedReader reader = new BufferedReader(new    InputStreamReader(isr, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null)
        {
            sb.append(line + "\n");
        }

        result = sb.toString();
        Log.e("log_tag", "BufferedReader:" +result);
    }

    catch(Exception e)
    {
        Log.e("log_tag, Error converting result"+e.toString(), result);
    }

    try {
        String s = "";
        JSONArray jArray = new JSONArray(result);

        for (int i = 0; i< jArray.length(); i++)
        {
            JSONObject json = jArray.getJSONObject(i);
            array=json.getString("Photo");
            arrayDataFromServer.add(array);
            Log.e("log_tag", "Array: " +array);
            Log.e("log_tag", "arrayDataFromServer: " +arrayDataFromServer);

        }

    }
    catch (Exception e)
    {
        Log.e("log_tag", "Error Parsing Data"+e.toString());
    }
    setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayDataFromServer));

}
public void onListItemClick(
        ListView parent, View v, int position, long id)
{
    //Toast.makeText(this, "You have selected" + colors[position], Toast.LENGTH_LONG).show();
}

}

activity_home.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <!-- Main ListView
         Always give id value as list(@android:id/list)
    -->


    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrayDataFromServer));背景画像に表示するために別のコードを使用できると思いますか?

どんな助けでも大歓迎です。前もって感謝します!

編集

String urlString = URLEncoder.encode(array);
            URL url = new URL(urlString);
            Bitmap bm = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            Drawable dr = new BitmapDrawable(bm); // that's the bitmap you downloaded from your server
            getListView.setBackground(dr);
4

1 に答える 1

0

あなたの質問に答えるには:

 // you can call this from inside the ListActivity
 Drawable dr = new BitmapDrawable(bitmap); // that's the bitmap you downloaded from your server
 getListView().setBackground(dr);

初心者に追加のアドバイスを与えるには:

StrictMode.enableDefaults();悪いコードに対する非常に優れた保護をマスクしているので、一緒に使用しないでください。それを正しく行う方法を学びましょう。AsyncTaskは非常に人気があり、非常に使いやすいスレッド プラットフォームであり、使用する必要があります。自信を持って冒険したい場合は、もう少し複雑ですが、はるかに強力なローダーを使用してください。

于 2013-04-11T10:09:47.677 に答える