2014-10-06 4 views
0

Я сохраняю значения в arraylist как {india,pakisthan,srilanka,nepal,malasiya,australia,ireland}, когда я устанавливаю этот список в BaseAdapter, последний элемент не показывает последний элемент в listview, когда listview расширяет экран устройства. Он показывал только Индию, Пакистан, Шриланку, Непал, Маляйяю и Австралию, и Ирландия не показывалась. Мой ListFragment классArrayList, не показывающий последний элемент в listview

package com.example.mynavigationtab; 

import java.util.ArrayList; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 


public class AndroidFragment extends ListFragment 
{ 
ArrayList<CountryObject> mCountry = new ArrayList<CountryObject>(); 
ArrayList<String> mCoun = new ArrayList<String>(); 
CountryObject country = new CountryObject(); 
AndroidAdapter mAdapter; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    LoadUrl(); 
    return super.onCreateView(inflater, container, savedInstanceState); 
} 
@Override 
public void onStart() { 
    super.onStart(); 
    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
super.onActivityCreated(savedInstanceState); 
} 
public void LoadUrl() 
{ 
ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>(); 
pairs.add(new BasicNameValuePair("naren", "naren")); 
new GetJsonData().execute(getString(R.string.tag_url),pairs,ThreadCode.THREAD_URL, handler); 
} 
private Handler handler = new Handler() { 
@Override 
public void handleMessage(Message msg) { 
    getActivity().removeDialog(0); 
    switch (msg.what) { 
    case ThreadCode.THREAD_URL: 
     final String result = (String) msg.obj; 
     LoadJson(result); 
     break; 
    default: 
     break; 
    } 
} 
}; 
public void LoadJson(String result) 
{ 
try 
{ 
    JSONObject mJson1 = new JSONObject(result); 
    JSONArray mResult = mJson1.getJSONArray("result"); 
    mCountry = new ArrayList<CountryObject>(); 
    for(int i=0; i<mResult.length(); i++) 
    { 
     JSONObject mRes = mResult.getJSONObject(i); 
     JSONArray mCount = mRes.getJSONArray("Country"); 

      JSONObject mCoun = mCount.getJSONObject(i); 
      CountryObject mSetData = new CountryObject(); 
      mSetData.setmCountry(mCoun.getString("name")); 
      mCountry.add(mSetData); 
      CountryObject mSetData1 = new CountryObject(); 
      mSetData1.setmCountry(mCoun.getString("name1")); 
      mCountry.add(mSetData1); 
      CountryObject mSetData2 = new CountryObject(); 
      mSetData2.setmCountry(mCoun.getString("name2")); 
      mCountry.add(mSetData2); 
      CountryObject mSetData3 = new CountryObject(); 
      mSetData3.setmCountry(mCoun.getString("name3")); 
      mCountry.add(mSetData3); 
      CountryObject mSetData4 = new CountryObject(); 
      mSetData4.setmCountry(mCoun.getString("name4")); 
      mCountry.add(mSetData4); 
      CountryObject mSetData5 = new CountryObject(); 
      mSetData5.setmCountry(mCoun.getString("name5")); 
      mCountry.add(mSetData5); 
      CountryObject mSetData6 = new CountryObject(); 
      mSetData6.setmCountry(mCoun.getString("name6")); 
      mCountry.add(mSetData6); 
      CountryObject mSetData7 = new CountryObject(); 
      mSetData7.setmCountry(mCoun.getString("name7")); 
      mCountry.add(mSetData7); 
      CountryObject mSetData8 = new CountryObject(); 
      mSetData8.setmCountry(mCoun.getString("name8")); 
      mCountry.add(mSetData8); 
     }  
} 
catch (JSONException e) { 
    Log.e("log_tag", "Error parsing data " + e.toString()); 
    String mMessage = "Error parsing JSON data from server. Please try again."; 
    showToast(mMessage); 
} 
} 
public void showToast(String message) { 
int duration = Toast.LENGTH_SHORT; 
Toast toast = Toast.makeText(getActivity(), message, duration); 
toast.show(); 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
super.onActivityResult(requestCode, resultCode, data); 
LoadUrl(); 


} 
    }` 

// Адаптер класса

package com.example.mynavigationtab; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class AndroidAdapter extends BaseAdapter 
{ 
ArrayList<String> mCountry = new ArrayList<String>(); 
Context mContext; 
TextView mCountryName; 
public AndroidAdapter(Context androidFragment,ArrayList<String> mCoun) 
{ 
    mCountry = mCoun; 
    mContext = androidFragment; 
} 

@Override 
public int getCount() 
{ 
    return mCountry.size(); 
} 

@Override 
public Object getItem(int position) 
{ 
    return mCountry.get(position); 
} 

@Override 
public long getItemId(int position) 
{ 
    return mCountry.indexOf(getItem(position)); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
converview = null; 
     if (convertView == null) 
     { 
     LayoutInflater vi = (LayoutInflater)mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE); 
     convertView = vi.inflate(R.layout.adapter_list, parent,false); 
     mCountryName = (TextView) convertView.findViewById(R.id.textOne); 
     mCountryName.setText(mCountry.get(position)); 
     } 

    return convertView; 
} 
} 

// Xml Layout для adapter_list.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"> 

<TextView 
android:id="@+id/textOne" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:textSize="30sp" 
android:padding="2dp" 
android:textStyle="bold"/> 
</RelativeLayout> 


//Json File 
{ 
result: [ 
{ 
Country: [ 
{ 
name: "India", 
name1: "Pakisthan", 
name2: "Bangaldesh", 
name3: "Australia", 
name4: "Ireland", 
name5: "SriLanka", 
name6: "Nepal", 
name7: "USA", 
name8: "Russia" 
} 
], 
States: [ 
{ 
states: "Tamil Nadu", 
states1: "Andhra", 
states2: "Karnataka", 
states3: "Kerala" 
} 
], 
District: [ 
{ 
district: "Krishnagiri", 
district1: "Dharmapuri", 
district2: "Salem", 
district3: "Hosur" 
} 
] 
} 
] 
} 
+0

Во-первых, проверьте в конструктор адаптера, чтобы увидеть, если данные -thourgh mCount ArrayList- фактически получен. – Behnam

+0

in for loop use i <= mCountry.size() insted i

+0

Возможно, проблема заключается в макете (потому что отображается только половина элемента). Покажи это. Я думаю: «return mCountry.indexOf (getItem (позиция)); равна «возвратной позиции»; – Deucalion

ответ

0

Atlast I решил это ............. Проблема в моем макете xml. Это я упомянул вес для framelayout в TabHost

// Modified XML макет

<?xml version="1.0" encoding="UTF-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#DBE9F4"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:background="@drawable/frame_shape" 
     android:layout_weight="0" /> 

    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:background="@android:color/white"> 
     </FrameLayout> 

    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 
    </android.support.v4.view.ViewPager> 

</LinearLayout> 

</TabHost> 
0
May this solve your problem : 
if (convertView == null) 
     { 
     LayoutInflater vi = (LayoutInflater)mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE); 
     convertView = vi.inflate(R.layout.adapter_list, parent,false); 
     mCountryName = (TextView) convertView.findViewById(R.id.textOne); 

     } 

mCountryName.setText(mCountry.get(position));//Write this after condition 
+0

его не решено ....... снова показывая тот же результат –

+0

Распечатайте свой arraylist в своем logcat, я думаю, что данные не хранятся должным образом в arraylist –

+0

Результаты первого этапа по загрузке логарифма «10 -06 12: 43: 20.537: I/Arraylits (4054): Индия 10-06 12: 43: 20.547: I/Arraylits (4054): Pakisthan 10-06 12:43 : 20.567: I/Arraylits (4054): Bangaldesh 10-06 12: 43: 20.607: I/Arraylits (4054): Австралия 10-06 12: 43: 20.607: I/Arraylits (4054): Ирландия 10- 06 12: 43: 20.637: I/Arraylits (4054): SriLanka 'затем прокручивающие дисплеи '10 -06 12: 43: 32.268: I/Arraylits (4054): Непал ' Остальные два элемента, не отображающие –

0

Одна проблема в том, что вы устанавливаете текст, только если convertView имеет значение null. Вы должны убедиться, что строка mCountryName.setText(mCountry.get(position)); выполняется каждый раз, в противном случае некоторые элементы не будут отображаться.

+0

Его получение девяти предметов из девяти, но отображение только семи и восьми item показывает только половину и девятую, не показывающую ..... как решить это, пожалуйста, помогите мне .... спасибо заранее –

Смежные вопросы