2017-12-03 3 views
0

BaseAdapter를 사용하여 ListView에 이미지를 표시하려면 다음 코드를 사용하고 있습니다. 코드는 드로어 블 폴더 내부의 이미지를 표시합니다. BaseAdapter를 사용하여 ListView에서 원격 이미지를 표시하는 방법은 무엇입니까?

String flags[] ={"http://www.website.com/images/usa.png","http://www.website.com/images/china.png","http://www.website.com/images/australia.png","http://www.website.com/images/portugle.png","http://www.website.com/images/norway.png","http://www.website.com/images/new_zealand.png"}; 

전문가가 사전에 change.Thanks 할 필요가 어떤 부분이 저를 보여줄 수 : 그것은 다음과 같은 배열에서 원격 이미지를 표시하므로하지만 코드를 수정합니다.

MainActivity.java :

public class MainActivity extends Activity { 

    ListView simpleList; 
    String countryList[] = {"USA", "China", "australia", "Portugle", "Norway", "NewZealand"}; 
    int flags[] = {R.drawable.usa, R.drawable.china, R.drawable.australia, R.drawable.portugle, R.drawable.norway, R.drawable.new_zealand}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     simpleList = (ListView) findViewById(R.id.simpleListView); 
     CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), countryList, flags); 
     simpleList.setAdapter(customAdapter); 

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

       Toast.makeText(getApplicationContext(), "Hello " + countryList[position], Toast.LENGTH_LONG).show(); 


      } 
     }); 
    } 
} 

CustomAdapter.java : 당신은 할 필요가

Public class CustomAdapter extends BaseAdapter { 
    Context context; 
    String countryList[]; 
    int flags[]; 
    LayoutInflater inflter; 

    public CustomAdapter(Context applicationContext, String[] countryList, int[] flags) { 
     this.context = context; 
     this.countryList = countryList; 
     this.flags = flags; 
     inflter = (LayoutInflater.from(applicationContext)); 
    } 

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

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

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

    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     view = inflter.inflate(R.layout.activity_listview, null); 
     TextView country = (TextView) view.findViewById(R.id.textView); 
     ImageView icon = (ImageView) view.findViewById(R.id.icon); 
     country.setText(countryList[i]); 
     icon.setImageResource(flags[i]); 
     return view; 
    } 
} 

답변

1

: 당신이 발리를 사용할 수 있습니다

1) 별도의 스레드에서 해당 이미지를 가져 오기, 개조 , 이것에 대한 robospice.

2) 1)의 메소드 중 하나의 응답에 대해 서비스에서 가져온 값 목록을 어댑터의 생성자에 전달해야합니다. 모델에 POJO를 만들어야합니다.이 구조는 REST 웹 서비스의 모든 요소를 ​​포함합니다.

3) 뷰를 반복적으로 팽창시키지 않으려면 목록보기 어댑터에 뷰 홀더를 사용하는 것이 좋습니다.

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    view = inflter.inflate(R.layout.activity_listview, null); 
    TextView country = (TextView) view.findViewById(R.id.textView); 
    ImageView icon = (ImageView) view.findViewById(R.id.icon); 
    country.setText(countryList[i]); 

    // Assuming flags is now the list of Strings of image urls 
    GlideApp.with(view.getContext()).load(flags[i]).into(icon); 

    return view; 
} 
+0

감사합니다. 나는 안드로이드 개발 경험이별로 없기 때문에 함수를 작성하고 getView 내부에서 호출하여 이미지 배열을 전달하여 listview에 표시하는 방법에 대한 자습서를 가르쳐 주시겠습니까? – user1788736

+0

그렇습니다. https://www.simplifiedcoding.net/android-volley-tutorial-fetch-json/ – HaroldSer

+0

나중에 잭슨 데이터 바인딩을 사용하여 응답의 값을 POJO (모델 클래스)에 매핑 할 수 있습니다. 참조 : https://stackoverflow.com/questions/25545984/how-to-use-jackson-objectmapper-to-parse-json-response-to-java-objects – HaroldSer

0

가장 쉬운 것은 Glide 또는 Picasso 사용합니다. (this)) .load ([어댑터의 위치]). into (imageView);

글라이드와 같습니다.

여기에 간단한 튜토리얼에게 답장을 https://www.simplifiedcoding.net/picasso-android-tutorial-picasso-image-loader-library/

+0

게시물을 보내 주셔서 감사합니다. GlideApp를 android studio 2.2에 추가하는 방법을 알려주시겠습니까? 나는 전에 그것을 사용한 적이 없다. – user1788736

+0

https://bumptech.github.io/glide/doc/download-setup.html – dominicoder

1

당신은 또한 피카소 같은 일부 타사 라이브러리를 사용하거나 오른쪽 어댑터의 GET보기 방법

피카소에 이미지를로드 글라이드 수 있습니다 할

관련 문제