0

help me please for my problem, Get the image source name of an GridView to display on a EditText Android. if click imageview then show name image in EditText android.. before image name In extract from the name of resources not from GridView in which are already existing..!

this view image ilustration :

Ilustration Image

grid_view:

 <?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">


 <GridView
 android:id="@+id/grid_view"
 android:layout_width="fill_parent"
 android:layout_height="368dp"
 android:columnWidth="90dp"
 android:gravity="center"
 android:horizontalSpacing="10dp"
 android:numColumns="auto_fit"
 android:stretchMode="columnWidth"
 android:verticalSpacing="10dp"/>


 <EditText
 android:id="@+id/editText1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:ems="10"
 android:inputType="text" />

 </LinearLayout>

strings.xml

 <?xml version="1.0" encoding="utf-8"?>
 <resources>

     <string name="app_name">Tes Buta Warna</string>
     <string name="action_settings">Settings</string>
     <string name="hello_world">Hello world!</string>
     <string name="inputdata">INPUT DATA</string>
     <string name="test">TEST</string>

 <string-array
     name="string_array_name">
     <item>Edwin</item>
     <item>Yulius</item>
     <item>Natan</item>
     <item>Ria</item>
   </string-array>

 </resources>

ImageAdapter.Java

 package com.tes.butawarna;

 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.plat_ishihara_01, 
    R.drawable.plat_ishihara_02,
    R.drawable.plat_ishihara_04,
    R.drawable.plat_ishihara_05,
    R.drawable.plat_ishihara_07,
    R.drawable.plat_ishihara_08,
    R.drawable.plat_ishihara_09,
    R.drawable.plat_ishihara_10,
 };

 // 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(70, 70));
return imageView;
}

AndroidGridLayout.java

package com.tes.butawarna;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.GridView;

public class AndroidGridLayoutActivity extends Activity {
String[] nama;
EditText namagambar;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
namagambar=(EditText)findViewById(R.id.editText1);

setContentView(R.layout.grid_layout);

GridView gridView = (GridView) findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(this));

gridView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View v,
            int position, long id) {

        // Sending image id to FullScreenActivity
        Intent i = new Intent(getApplicationContext(), Training.class);
        // passing array index
        i.putExtra("id", position);

        startActivity(i);
    }
});
}
  • show some code of how u fill the `arraylist` before setting `adapter` and `onItemClick`. – Kaushik Jul 23 '14 at 10:50
  • already update my code..please you correction. :) – Edwin Ariesto Jul 24 '14 at 11:35
  • i'll do it when I get time :) – Kaushik Jul 25 '14 at 17:56
  • These are the links http://stackoverflow.com/questions/9156698/how-to-get-images-dynamically-from-drawable-folder http://stackoverflow.com/questions/6611203/android-how-to-get-drawable-image-name http://stackoverflow.com/questions/17393508/how-to-get-the-drawable-name-from-my-image-in-a-list-view-android] – Kaushik Jul 29 '14 at 04:41

1 Answers1

0

You need to define string-array having the same name of your drawables.

/res/values/string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array
    name="string_array_name">
    <item>Edwin</item>
    <item>Yulius</item>
    <item>Natan</item>
    <item>Ria</item>
  </string-array>
</resources>

in your code

String[] names = getResource().getStringArray(R.array.string_array_name);

// you must implement this class
YourAdapter adapter = new YourAdapter(names, /* and some params */);
youGridView.setAdapter(adapter);

YouAdapter.java (extended android.widget.ArrayAdapter)

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

  // you must inflate gridview' child layout
  View view = layoutInflater.inflate( ... );
  ImageView imageView = (ImageView) view.findViewById( ... );
  TextView imageView = (TextView) view.findViewById( ... );

  // ...

  String name = getItem();
  int id = getIdentifier(name, "drawable", getApplicationInfo().packageName);

  imageView.setImageResource(id);
  textView.setText(name);
}

this is only work when all of your images are in resource directory.

Yuki Yoshida
  • 1,233
  • 1
  • 15
  • 28