0

偉大な開発者とヘルパーの皆さん、こんにちは。助けが必要です。アイコンが定義されたグリッドビューがあります。(アプリケーションに保存されているため、インターネットからダウンロードする必要はありません)。

第 1 の質問 - 既存の gridview アダプターに textview (つまり、アイコンの名前) を追加する方法を教えてください。

2 番目の質問 (最も重要で、解決することが最優先) - 各項目に指定された URL を追加し、ユーザーがそれをクリックすると、指定されたファイルがダウンロードされるようにするにはどうすればよいですか? (例 - 私のグリッドビューにはスキンが表示されます。ユーザーはそれをクリックすると、選択したスキンをダウンロードできます。) 多くの方法を試しましたが、解決策が見つかりません。そんな感じ:

    public void prepareList()
{
    listHttp = new ArrayList();
    listHttp.add("http://yoursite/file1.apk");
    listHttp.add("http://yoursite/file2.apk");
    listHttp.add("http://yoursite/file3.apk");

SkinsActivity.class

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import java.util.ArrayList;

public class SkinsActivity extends Activity {
com.htc.widget.HtcAlertDialog.Builder builder;




@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.grid_layout);

    GridView gridView = (GridView) findViewById(R.id.grid_view);

    // Instance of ImageAdapter Class
    gridView.setAdapter(new ImageAdapter(this));

    /**
     * On Click event for Single Gridview Item
     * */
    gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {


            HtcAlertDialog.Builder alertDialog = new HtcAlertDialog.Builder(SkinsActivity.this);

          //   Setting Dialog Title
           alertDialog.setTitle("Confirm Installation");

         //   Setting Dialog Message
            alertDialog.setMessage("Do you want to install this skin?");

        //    Setting Icon to Dialog
            alertDialog.setIcon(R.drawable.ic_about);

          //   Setting Positive "Yes" Button
            alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int which) {

            //    Write your code here to invoke YES event
                Toast.makeText(getApplicationContext(), "You clicked on YES", Toast.LENGTH_SHORT).show();
               }
            });

            // Setting Negative "NO" Button
          alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int which) {
                // Write your code here to invoke NO event
              Toast.makeText(getApplicationContext(), "You clicked on NO", Toast.LENGTH_SHORT).show();
            dialog.cancel();
             }
         });

            // Showing Alert Message
           alertDialog.show();


        }
    });
}

ImageAdapter.class (Gridviewadapter)

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
private Context mContext;

// Keep all Images in array
public Integer[] mThumbIds = {
        R.drawable.sense5, R.drawable.sense5red,
        R.drawable.concrete, R.drawable.graphite,
        R.drawable.sense5_full,

};




// Constructor
public ImageAdapter(Context c){
    mContext = c;
}

@Override
public int getCount() {
    return mThumbIds.length;
}

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(250, 180));
    return imageView;
}

}
4

1 に答える 1

0
  1. 追加するには、独自のレイアウトを作成し、アダプターのメソッドでTextView動的に膨張させることができます。getView
  2. リンク部分を管理するには、文字列配列を使用できます。メソッドでは、パラメーターを使用しonItemClickて特定の URL を取得し、必要に応じて使用できます。position

-編集-

TextView部分に使用できるxml

my_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >
    <ImageView
        android:id="@+id/appIcon"
        android:layout_height="60dp"
        android:layout_width="60dp"
        android:src="@drawable/albumstack1"
        android:layout_centerHorizontal="true"
        />
    <TextView
        android:id="@+id/appNameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/appIcon"
        android:layout_centerHorizontal="true" 
        android:gravity="center_horizontal"
        android:textIsSelectable="false"
        android:text="My Application name"
        />
</RelativeLayout>

を使用して getView メソッドでそれを膨らませることができます

LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
@Override
public View getView(int position, View convertView, ViewGroup parent) {
     View v = convertView;
        if (v == null) {
            v = li.inflate(R.layout.my_view, null);
           ((TextView)v.findViewById(R.id.appNameTextView)).setText("put your text here");
            ((ImageView)v.findViewById(R.id.appIcon)).setImageResource(mThumbIds[position]);
    }
    return v;
}

質問に listHttp があったリンク部分については、同じものを使用できます

gridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
        /**your code**/
        //This is the string you need for the url, do whatever you want to do with this string
        String urlForApp = listHttp.get(position);
    }
}
于 2013-03-07T08:12:36.750 に答える