2014-06-23 2 views
0

내 안드로이드 응용 프로그램에서 jsoup 라이브러리를 사용하려고하는데 description 클래스에서 str1 값을 가져 와서 MyAdapter 클래스에서 items.add (새 항목 (str1, R .drawable.flag_one)); 내가 그것을 알아낼 수 없습니다, 어떤 도움은 매우 잘 public class HomeFragment extends Fragment에서,두 가지 다른 방법으로 변수 사용

public class HomeFragment extends Fragment { 

// URL Address 
String url = "http://www.livescore.com"; 

public HomeFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    final View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

    getOverFlowMenu(); 

    GridView gridView = (GridView)rootView.findViewById(R.id.gridview); 
    gridView.setAdapter(new MyAdapter(rootView.getContext())); 

    new Description(); 

    return rootView; 

} 

private void getOverFlowMenu() { 

} 

//Description async task 
class Description extends AsyncTask<Void, Void, Void>{ 
    String desc; 
    @Override 
    protected Void doInBackground(Void... voids) { 
     try{ 
      // Connect to the web site 
      Document document = Jsoup.connect(url).get(); 

      Element content = document 
        .body().getElementsByClass("kubrick-info__title").first(); 
      // Locate the content attribute 
      desc = content.text(); 

     }catch (IOException e){ 
      e.printStackTrace(); 
     } 
     return null; 
    } 
    @Override 
    protected void onPostExecute(Void result){ 
     // Set description into TextView 
     String str1 = desc; 
    } 
} 

private class MyAdapter extends BaseAdapter 
{ 
    private List<Item> items = new ArrayList<Item>(); 
    private LayoutInflater inflater; 

    public MyAdapter(Context context) 
    { 
     inflater = LayoutInflater.from(context); 

     items.add(new Item(str1, R.drawable.flag_one)); 
     items.add(new Item("teams", R.drawable.flag_two)); 
    } 

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

    @Override 
    public Object getItem(int i) 
    { 
     return items.get(i); 
    } 

    @Override 
    public long getItemId(int i) 
    { 
     return items.get(i).drawableId; 
    } 

}

답변

0

당신이 상단에 static String str1 = ""를 선언 할 수 있습니다 감사합니다? 그런 다음 onPostExecute 방법 :

@Override 
protected void onPostExecute(Void result){ 
    // Set description into TextView 
    str1 = desc; 
} 

아이디어는 문자열 맨 위에 선언이 경우, 그것은 전체 HomeFragment 클래스를 통해 볼 수 있다는 것입니다.

+0

그 접근 방식을 사용할 때 널 포인터 예외가 발생합니다. – Richmahnn

+0

어디에서 예외가 발생합니까? 더 많은 정보를 제공해 줄 수 있습니까? – RogueBaneling

+0

코드를 실행할 때 첫 번째 str1을 가져와 아무 것도 표시하지 않습니다. – Richmahnn

관련 문제