0

ここで 1 つのアプリケーションを実行しています。グリッドビューでテキストビューを使用して A から Z の値を表示しています。その後、アルファベットをクリックすると、他のアクティビティに移動します。それまでは、「A」アルファベットをクリックすると問題が発生します。 Activity2 に移動し、前のアクティビティ (GridViewActivity) に戻るということは、「A」アルファベットのテキストのみを赤色で表示する必要があることを意味し、すべてのアルファベットをデフォルトの色のままにしてから、もう一度「B」アルファベットをクリックしてから、いくつか行きます。他のActivity2では、GridviewActivityに戻ってきます。つまり、「AとB」のアルファベットのみが「赤い色」である必要があり、アルファベットはすべてデフォルトの色のままです..以下のコードを使用してみました.Aのアルファベットをクリックすると、Activity2に移動します、その後 GridviewActivity に戻り、その時点ですべてのアルファベットが赤色に変わります。しかし、私は赤い色のアルファベットだけを表示したいので、誰かアイデアを教えてください。

public class GridViewActivity extends Activity {

GridView gridView;

static final String[] MOBILE_OS = new String[] { "A", "B",
        "C", "D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

    gridView.setAdapter(new ImageAdapter(this, MOBILE_OS));

    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
        Toast.makeText(
                    getApplicationContext(),""+position, Toast.LENGTH_SHORT).show();
            GlobalClass.value1=1;
            Intent i=new Intent(GridViewActivity.this,Activity2.class);
            i.putExtra("k1", "position");
            startActivity(i);
            }
    });

}
public class ImageAdapter extends BaseAdapter {
    private Context context;
    private final String[] mobileValues;

    public ImageAdapter(Context context, String[] mobileValues) {
        this.context = context;
        this.mobileValues = mobileValues;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {

            gridView = new View(context);

            // get layout from mobile.xml
            gridView = inflater.inflate(R.layout.mobile, null);

            // set value into textview
            TextView textView = (TextView) gridView
                    .findViewById(R.id.grid_item_label);
            textView.setText(mobileValues[position]);

            if(GlobalClass.value1==1)
            {
                textView.setTextColor(Color.RED);
            }
            } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

}


String mLabelsIds[]={"RED","YELLOW","black"};
      }
4

1 に答える 1

2

アクティビティを開始する前にsetOnItemClickListener()、現在クリックされている文字の色を変更します。あなたが戻ったとき、テキストはすでに色付けされているはずです。

このようなもの:

gridView.setOnItemClickListener(new OnItemClickListener() {
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
         TextView currentLetter = (TextView) v.findViewById(R.id.grid_item_label);
         currentLetter.setTextColor(Color.GREEN);

         // start Activity2 here
     }
}

getItem()補足として、メソッドとメソッドの実装を提供してくださいgetItemId()。そうしないと、奇妙な動作が発生する可能性があります。

@Override
public Object getItem(int position) {
   return mobileValues[position]; //return the element from array at specified position
}

@Override
public long getItemId(int position) {
   return position; //usually the item id is its position.
}
于 2013-06-20T12:46:21.663 に答える