2012-09-04 13 views
9

से परिवर्तित किया जाना चाहिए यह एक लंबा संदेश हो सकता है लेकिन मैं सभी स्टैक ओवरफ्लो उपयोगकर्ता के लिए एक स्पष्ट प्रश्न देना चाहता हूं। मैं क्या एक वर्ग है किस्ट्रिंग का स्टेटिक ऐरे डेटाबेस

class ParserArrayList { 
     //some declaration and codes here 
     private String [] imageCaptionId = { 
     "My First Medal", 
     "You ...", 
     "The ...", 
     "Gimme ...", 
     "A ...", 
     "Seven ...", 
     ".....City", 
     ".... Madness", 
     "Loyal...", 
     ".....", 
     "...", 
     "Champion..." 
     }; 
} 

और मैन्युअल रूप से सार्वजनिक वर्ग ImageAdapter पर यह बाध्यकारी BaseAdapter

public class ImageAdapter extends BaseAdapter{ 
//some declaration and variables here 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v; 

     ParserArrayList arrayImage = new ParserArrayList(); 
     String[] imagetext = arrayImage.getImageCaptionId(); 
     if (convertView == null) { 
     //some stuff here 
     } 
//some stuff here 
return v; 
} 

फैली जैसा कि आप देख मैं बोल रहा हूँ मेरी gridview पर आबद्ध है अंदर सरणी के एक स्थिर स्ट्रिंग बनाने है ParserArrayList की 'imageCaptionId' और इसे सरणी की एक और स्ट्रिंग में भेजता है जिसमें मैं 'imagetext'

सब कुछ ठीक काम करता है जब तक मुझे पता चला कि सरणी 'imageCaptionId' स्थानीय डेटाबेसपर आधारित होना चाहिएIve इस कोड का उपयोग करने की कोशिश की, लेकिन मैं खत्म नहीं कर सकते क्योंकि

class ParserArrayList { 
//added this code 
public SQLiteAdapter sqlAdapter; 
//and this one 
public void showData(){ 
    sqlAdapter = new SQLiteAdapter(this); 

    String str = "Select dTitle from achievement_tb where version =0 order by ID ASC;"; 

    sqlAdapter.openToRead(); 

    Cursor c =sqlAdapter.read(str); 

    sqlAdapter.close(); 
} 
} 

सबसे पहले: मैं न पता है कि सरणी के लिए यह बाँध के लिए

दूसरा: मैं इसे ParserArrayList अंदर बनाया है और यह मुझे कह एक त्रुटि देता है निर्माता SQLiteAdapter (ParserArrayList) अपरिभाषित है (यह पहले से ही किया जाता है)

तुम मुझे सर मदद कर सके

ई DIT यह है कि मैं क्या पूरा करने के लिए या कोशिश कर रहा हूँ मेरी तर्क

मेरी ParserArrayList वर्ग पर

मैं इस कोड (मैं अगर यह सही है नहीं जानता)

public String[] showImageCaption(){ 
    String imageCaptionIds []; 
    sqlAdapter = new SQLiteAdapter(mContext); 

    String str = "Select dTitle from achievement_tb where version =0 order by ID ASC;"; 

    sqlAdapter.openToRead(); 

    Cursor c =sqlAdapter.read(str);  
    imageCaptionIds [c.getCount()]; 

    sqlAdapter.close(); 
    return imageCaptionIds; 
} 

जो मुझे एक त्रुटि देता जोड़ने की कोशिश कर रहा हूँ कह सिंटैक्स त्रुटि, मेरे ImageAdapter पर अभिव्यक्ति

अब पूरा करने के लिए सम्मिलित "AssignmentOperator अभिव्यक्ति" फैली BaseAdapter यहाँ मेरी कोड है

public View getView(int position, View convertView, ViewGroup parent) { 
     View v; 
     ParserArrayList arrayImage = new ParserArrayList(mContext); 
     newArrayList2 = arrayImage.getArraylist(); 
     **String[] imagetext = arrayImage.showImageCaption();** 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      LayoutInflater li = getLayoutInflater(); 
      v = li.inflate(R.layout.medal_grid, null); 
     } 
     else 
     { 
      v = convertView; 
     } 
     TextView tv = (TextView) 
     v.findViewById(R.id.grid_item_label); 
     **tv.setText(imagetext[position]);** 
     ImageView iv = (ImageView)v.findViewById(R.id.grid_item_image); 
     iv.setImageResource((Integer) newArrayList2.get(position)); 
     return v; 
    } 

मेरे तर्क है कि मैं ParserArrayList (जिसमें यह imageCaptionIds वापस आ जाएगी) के अंदर स्ट्रिंग के अपने सरणी पर यह बाँध जाएगा और एक TextView

+0

आशा किसी को इस सवाल का कारण हो सकता है मैं जवाब कर सकते हैं यह भी सामना करना पड़ा^_^ – Janwel

+0

दूसरी समस्या होती है क्योंकि आप 'sqlAdapter = नए SQLiteAdapter को गलत पैरामीटर गुजर रहे हैं (this); '। आपका 'यह' 'ParserArrayList' (जो आपके द्वारा बनाई गई वस्तु है) को संदर्भित करता है, आपको डेटाबेस तक पहुंचने के लिए 'SQLiteOpenHelper' बनाना चाहिए। देखें [यह ट्यूटोरियल] (http://www.vogella.com/articles/AndroidSQLite/article.html) – Aprian

+0

बीमार अपने लेख को पढ़ने का प्रयास करें सर –

उत्तर

1

मैं पहला सवाल समझ में नहीं आता पर सेट है, लेकिन दूसरा एक है आसान है।

आपको एक संदर्भ (या एक वर्ग जो एक गतिविधि की तरह विस्तार करता है) new SQLiteAdapter() पर पास करने की आवश्यकता है। बस अपने ParserArrayList इस मैच के लिए बदलने के लिए:

public class ParserArrayList { 
    Context mContext; 
    ... 

    public ParserArrayList(Context context) { 
     mContext = context; 
     ... 
    } 

    public void showData(){ 
     sqlAdapter = new SQLiteAdapter(mContext); 
     ... 
    } 
} 

अपनी गतिविधि के अंदर, शायद OnCreate(), बस फोन:

ParserArrayList pal = new ParserArrayList(this); 

मैं पहली बार सवाल का जवाब देने का प्रयास करेंगे। क्यों आपकी स्ट्रिंग सरणी को SQLiteDatabase में रखा जाना चाहिए? एक ArrayAdapter<String> स्ट्रिंग सरणी के साथ काफी अच्छी तरह से काम करता है ... इस काम को कुछ क्यों नहीं लगेगा?

public class ImageAdapter extends ArrayAdapter<String> { 
    //some declaration and variables here 

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

     String imagetext = getItem(position); // returns the caption at index 
     if (convertView == null) { 
      //some stuff here 
     } 

     //some stuff here 
     return v; 
    } 
} 
एक घोषणा के साथ

:

private String [] imageCaptionId = { ... }; 
ImageAdapter adapter = new ImageAdapter(this, R.layout.awesome, imageCaptionId); 
+0

सर यही मैं कोशिश कर रहा हूं पूरा। कृपया मुझे –

+0

से ऊपर संपादित कोड देखें मेरे तर्क संभव सर? कृपया इसे अभी देखें –

+0

ठीक है सर मुझे लगता है कि मैं आपके उत्तर के आधार पर अपना तर्क दोबारा तैयार करूंगा .. आपके उत्तर के लिए धन्यवाद^_^ –

संबंधित मुद्दे