यह एक तस्वीर दर्शक है चित्र संसाधनों के ग्रिड व्यू के साथ समाधान जिसमें से आप एक तस्वीर चुन सकते हैं और इसे एक ही तस्वीर के रूप में प्रदर्शित कर सकते हैं। इस एकल चित्र दृश्य में, यह PictureViewer.java के साथ पूरा हो गया है, आप बाएं और दाएं बटन का उपयोग करके संसाधन चित्रों को ब्राउज़ कर सकते हैं। आप ग्रिड व्यू पर भी लौट सकते हैं जो HelloGridViewActivity.java के साथ पूरा हो गया है। ImageAdapter.java का उपयोग ग्रिड व्यू संसाधनों और विधियों को परिभाषित करने के लिए किया जाता है। आशा है कि इस मदद करता है:
HelloGridViewActivity.java:
package com.example.hellogridview;
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.GridView;
public class HelloGridViewActivity extends Activity {
private long prev=0,next= 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
prev = ImageAdapter.getPrevItemId(position);
next = ImageAdapter.getNextItemId(position);
showImage(gridview.getAdapter().getItemId(position),position);
}
});
}
private void showImage(long id, int pos){
Intent pictureViewer = new Intent(this, PictureViewer.class);
pictureViewer.putExtra("pictureId",id);
pictureViewer.putExtra("picturePosition", pos);
pictureViewer.putExtra("picturePrevId", prev);
pictureViewer.putExtra("pictureNextId", next);
startActivityForResult(pictureViewer,0);
}
}
ImageAdapter.java:
package com.example.hellogridview;
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;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return mThumbIds[position];
}
public static long getPrevItemId(int position) {
if(--position<0) position = 21;
return mThumbIds[position];
}
public static long getNextItemId(int position) {
if(++position>21) position = 0;
return mThumbIds[position];
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private static Integer[] mThumbIds = {
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
PictureViewer.java:
package com.example.hellogridview;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class PictureViewer extends Activity {
long picItem,picPrevItem,picNextItem;
int picPosition;
private ImageView m_vwImage;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.picture_layout);
//citanje podataka prosledjenih ovoj aktivnosti
//namera koja je pokrenula ovu aktivnost
Intent i = getIntent();
picItem = i.getLongExtra("pictureId", -1);
picPrevItem = i.getLongExtra("picturePrevId", -1);
picNextItem = i.getLongExtra("pictureNextId", -1);
picPosition = i.getIntExtra("picturePosition", -1);
m_vwImage = (ImageView) findViewById(R.id.imageview);
//menjamo ulazne vrednosti da bi ih takve prosledili kao povratne
Log.i("Nemanja", "picItem" + picItem);
Drawable image = getResources().getDrawable((int)picItem);
m_vwImage.setImageDrawable(image);
Button startButton = (Button) findViewById(R.id.return_button);
startButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
finish();
}
});
Button leftButton = (Button) findViewById(R.id.left_button);
leftButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Drawable imagePrev = getResources().getDrawable((int)picPrevItem);
m_vwImage.setImageDrawable(imagePrev);
if(--picPosition<0) picPosition = 21;
picPrevItem = (ImageAdapter.getPrevItemId(picPosition));
picNextItem = (ImageAdapter.getNextItemId(picPosition));
}
});
Button rightButton = (Button) findViewById(R.id.right_button);
rightButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
Drawable imageNext = getResources().getDrawable((int)picNextItem);
m_vwImage.setImageDrawable(imageNext);
if(++picPosition>21) picPosition = 0;
picNextItem = (ImageAdapter.getNextItemId(picPosition));
picPrevItem = (ImageAdapter.getPrevItemId(picPosition));
}
});
}
}
HelloGridView मैनिफ़ेस्ट:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hellogridview"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".HelloGridViewActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".PictureViewer"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
यह पूरी तरह से काम करता है। मुझे पागल क्या चल रहा है यह है कि मेरी 3 या 4 टेस्ट परियोजनाओं ने अनिवार्य रूप से वही किया, लेकिन वे या तो मजबूर हो जाएंगे या किसी अन्य तरीके से काम नहीं करेंगे। मेरे बालों को फाड़ने से बचाने के लिए धन्यवाद। जो भाग मैं अलग से देखता हूं वह ऑनक्लिक लिस्टनर है, क्या आपको इसे "इस" पर सेट करना होगा, बस मैं एक और पूर्ण समझ प्राप्त करने का प्रयास कर सकता हूं। एक बार फिर धन्यवाद। – Hamid
एंड्रॉइड के लिए नया होने के नाते, मैं वास्तव में यह समझा नहीं सकता कि इसे "इस" पर क्यों सेट किया जाना है। मैं * सोचता हूं * "यह" सिर्फ आपकी कक्षा, या मुख्य गतिविधि का संदर्भ देता है। उपर्युक्त उदाहरण की तरह, "यह" को "ImageViewExample.this" द्वारा प्रतिस्थापित किया जा सकता है और यह वही काम करेगा। मैंने उपरोक्त को http://developer.android.com/guide/topics/ui/ui-events.html – ShadowGod
पढ़ने से सीखा है। सबसे सहायक और दयालु। – Hamid