2015-09-24 3 views
0

Я проанализировал все текстовые изображения и изображения в виде списка, но когда я пытаюсь щелкнуть по одному списку, оно отображает текстовое изображение, но не отображает вид изображения bdw Я не знаю, как это получить.Установить изображение в представлении изображения с помощью JSON Parsing в Android

MainActivity.java`

public class MainActivity extends Activity { 

static ArrayList<Actors> actorsList; 

ActorAdapter adapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    actorsList = new ArrayList<Actors>(); 
    //final ArrayList<Actors> movieList = new ArrayList<Actors>(); 
    new JSONAsyncTask().execute("http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors"); 

    ListView listview = (ListView)findViewById(R.id.list); 
    adapter = new ActorAdapter(getApplicationContext(), R.layout.row, actorsList); 

    listview.setAdapter(adapter); 

    listview.setOnItemClickListener(new OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
       long id) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), actorsList.get(position).getName(), Toast.LENGTH_LONG).show(); 

      Actors m = actorsList.get(position); 


      Intent i = new Intent(MainActivity.this, SingleView.class); 
      i.putExtra("position", String.valueOf(position)); 
      i.putExtra("thumb", m.getImage()); 
      i.putExtra("name", m.getName()); 
      i.putExtra("dob", m.getDob()); 
      i.putExtra("height", m.getHeight()); 
      i.putExtra("country", m.getCountry()); 
    //  View imageView = null; 
      //imageView.buildDrawingCache(); 

     // Bitmap image= imageView.getDrawingCache(); 

      // Bundle extras = new Bundle(); 
     // extras.putParcelable("imagebitmap", image); 
     // i.putExtras(extras); 

      startActivity(i); 
     } 
    }); 
} 


class JSONAsyncTask extends AsyncTask<String, Void, Boolean> { 

    ProgressDialog dialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     dialog = new ProgressDialog(MainActivity.this); 
     dialog.setMessage("Loading, please wait"); 
     dialog.setTitle("Connecting server"); 
     dialog.show(); 
     dialog.setCancelable(false); 
    } 

    @Override 
    protected Boolean doInBackground(String... urls) { 
     try { 

      //------------------>> 
      HttpGet httppost = new HttpGet(urls[0]); 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpResponse response = httpclient.execute(httppost); 

      // StatusLine stat = response.getStatusLine(); 
      int status = response.getStatusLine().getStatusCode(); 

      if (status == 200) { 
       HttpEntity entity = response.getEntity(); 
       String data = EntityUtils.toString(entity); 


       JSONObject jsono = new JSONObject(data); 
       JSONArray jarray = jsono.getJSONArray("actors"); 

       for (int i = 0; i < jarray.length(); i++) { 
        JSONObject object = jarray.getJSONObject(i); 

        Actors actor = new Actors(); 

        actor.setName(object.getString("name")); 
        actor.setDescription(object.getString("description")); 
        actor.setDob(object.getString("dob")); 
        actor.setCountry(object.getString("country")); 
        actor.setHeight(object.getString("height")); 
        actor.setSpouse(object.getString("spouse")); 
        actor.setChildren(object.getString("children")); 
        actor.setImage(object.getString("image")); 

        actorsList.add(actor); 
       } 
       return true; 
      } 

      //------------------>> 

     } catch (ParseException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return false; 
    } 

    protected void onPostExecute(Boolean result) { 
     dialog.cancel(); 
     adapter.notifyDataSetChanged(); 
     if(result == false) 
      Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show(); 

    } 
} 

ActorAdapter.java

public class ActorAdapter extends ArrayAdapter<Actors> { 
ArrayList<Actors> actorList; 
LayoutInflater vi; 
int Resource; 
ViewHolder holder; 
private static ActorAdapter mInstance; 

public void onCreate() { 
    mInstance = this; 
} 


public ActorAdapter(Context context, int resource, ArrayList<Actors> objects) { 
    super(context, resource, objects); 
    vi = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Resource = resource; 
    actorList = objects; 
} 


@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // convert view = design 
    View v = convertView; 
    if (v == null) { 
     holder = new ViewHolder(); 
     v = vi.inflate(Resource, null); 
     holder.imageview = (ImageView) v.findViewById(R.id.ivImage); 
     holder.tvName = (TextView) v.findViewById(R.id.tvName); 
     holder.tvDescription = (TextView) v.findViewById(R.id.tvDescriptionn); 
     holder.tvDOB = (TextView) v.findViewById(R.id.tvDateOfBirth); 
     holder.tvCountry = (TextView) v.findViewById(R.id.tvCountry); 
     holder.tvHeight = (TextView) v.findViewById(R.id.tvHeight); 
     holder.tvSpouse = (TextView) v.findViewById(R.id.tvSpouse); 
     holder.tvChildren = (TextView) v.findViewById(R.id.tvChildren); 
     v.setTag(holder); 
    } else { 
     holder = (ViewHolder) v.getTag(); 
    } 
    holder.imageview.setImageResource(R.drawable.ic_launcher); 
    new DownloadImageTask(holder.imageview).execute(actorList.get(position).getImage()); 
    holder.tvName.setText(actorList.get(position).getName()); 
    holder.tvDescription.setText(actorList.get(position).getDescription()); 
    holder.tvDOB.setText("B'day: " + actorList.get(position).getDob()); 
    holder.tvCountry.setText(actorList.get(position).getCountry()); 
    holder.tvHeight.setText("Height: " + actorList.get(position).getHeight()); 
    holder.tvSpouse.setText("Spouse: " + actorList.get(position).getSpouse()); 
    holder.tvChildren.setText("Children: " + actorList.get(position).getChildren()); 
    return v; 

} 

static class ViewHolder { 
    public ImageView imageview; 
    public TextView tvName; 
    public TextView tvDescription; 
    public TextView tvDOB; 
    public TextView tvCountry; 
    public TextView tvHeight; 
    public TextView tvSpouse; 
    public TextView tvChildren; 

} 

class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 


} 

public static ActorAdapter getInstance() { 
    // TODO Auto-generated method stub 
    return mInstance; 
} 

SingleView.Java

public class SingleView extends Activity{ 
TextView name,dob,height,country; 
Button back,prev,nxt; 
ImageView img ; 

//imageLoader = ActorAdapter.getInstance().getImage(); 

private ArrayList<Actors> movieList_detail = new ArrayList<Actors>(); 

int selected = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.singleview);  

    Intent i = getIntent(); 

    final String image1 = i.getStringExtra("thumb"); 
    String name1 = i.getStringExtra("name"); 
    String dob1 = i.getStringExtra("dob"); 
    String height1 = i.getStringExtra("height"); 
    String country1 = i.getStringExtra("country"); 

    img = (ImageView)findViewById(R.id.ivImage); 
    name = (TextView)findViewById(R.id.tvName); 
    dob = (TextView)findViewById(R.id.tvDateOfBirth); 
    height = (TextView)findViewById(R.id.tvHeight); 
    country = (TextView)findViewById(R.id.tvCountry); 
    back = (Button)findViewById(R.id.button1); 
    prev = (Button)findViewById(R.id.button2); 
    nxt = (Button)findViewById(R.id.button3); 

    movieList_detail = MainActivity.actorsList; 


    name.setText(name1); 
    dob.setText(dob1); 
    height.setText(height1); 
    country.setText(country1); 



    back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
     } 
    }); 

    prev.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      if(selected>0){ 

       selected--; 

       Actors m = movieList_detail.get(selected); 
       //String image = m.getThumbnailUrl(); 
       name.setText(m.getName()); 
       dob.setText(m.getDob()); 
       height.setText(m.getHeight()); 
       country.setText(m.getCountry()); 
      // img.DisplayImage(m.getImage(), image1); 


       nxt.setVisibility(View.VISIBLE); 
      }else 
      { 
       prev.setVisibility(View.GONE); 
      } 
     } 
    }); 

     nxt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 

       if(selected<5){ 

        selected++; 

        Actors m = movieList_detail.get(selected); 
        //String image = m.getThumbnailUrl(); 
        name.setText(m.getName()); 
        dob.setText(m.getDob()); 
        height.setText(m.getHeight()); 
        country.setText(m.getCountry()); 
       // imageLoader.DisplayImage(m.getImage(), img); 

      prev.setVisibility(View.VISIBLE); 
      }else 
      { 
       nxt.setVisibility(View.GONE); 
      } 
     } 
    }); 


} 

}

Actors.java 

public class Actors { 
private String name; 
private String description; 
private String dob; 
private String country; 
private String height; 
private String spouse; 
private String children; 
private String image; 

public Actors() { 
    // TODO Auto-generated constructor stub 
} 

public Actors(String name, String description, String dob, String country, 
     String height, String spouse, String children, String image) { 
    super(); 
    this.name = name; 
    this.description = description; 
    this.dob = dob; 
    this.country = country; 
    this.height = height; 
    this.spouse = spouse; 
    this.children = children; 
    this.image = image; 
} 


public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDescription() { 
    return description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public String getDob() { 
    return dob; 
} 

public void setDob(String dob) { 
    this.dob = dob; 
} 

public String getCountry() { 
    return country; 
} 

public void setCountry(String country) { 
    this.country = country; 
} 

public String getHeight() { 
    return height; 
} 

public void setHeight(String height) { 
    this.height = height; 
} 

public String getSpouse() { 
    return spouse; 
} 

public void setSpouse(String spouse) { 
    this.spouse = spouse; 
} 

public String getChildren() { 
    return children; 
} 

public void setChildren(String children) { 
    this.children = children; 
} 

public String getImage() { 
    return image; 
} 

public void setImage(String image) { 
    this.image = image; 
} 

}

+0

Ваш вопрос не ясно, я видел ваш MainActivity где в объявлении вы загружаете изображение в ActorAdapter. Но в вашем единственном представлении «Активность» вы не загружаете изображение. Итак, как он будет отображать изображение ??? Если вы хотите, вы можете использовать библиотеку загрузки изображений Glide или Picasso. –

+0

Уважаемый @Sudhanshu, вы помещаете URL-адрес изображения в целях SingleViewActivity, и вам нужно запустить задачу загрузчика изображений, чтобы установить изображение на изображении в SingleViewActivity. –

+0

То, что я прошу Neeraj, как установить изображение в классе Singleview.java, я прошел через намерение и получил его от MainActivity и установил все текстовые изображения, но не смог установить изображение, не смог найти подходящего решения для него. – Sudhansu

ответ

3

Попробуйте

public class SingleView extends Activity{ 
TextView name,dob,height,country; 
Button back,prev,nxt; 
ImageView img ; 

//imageLoader = ActorAdapter.getInstance().getImage(); 

private ArrayList<Actors> movieList_detail = new ArrayList<Actors>(); 

int selected = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.singleview);  

    Intent i = getIntent(); 

    final String image1 = i.getStringExtra("thumb"); 
    String name1 = i.getStringExtra("name"); 
    String dob1 = i.getStringExtra("dob"); 
    String height1 = i.getStringExtra("height"); 
    String country1 = i.getStringExtra("country"); 

    img = (ImageView)findViewById(R.id.ivImage); 
    name = (TextView)findViewById(R.id.tvName); 
    dob = (TextView)findViewById(R.id.tvDateOfBirth); 
    height = (TextView)findViewById(R.id.tvHeight); 
    country = (TextView)findViewById(R.id.tvCountry); 
    back = (Button)findViewById(R.id.button1); 
    prev = (Button)findViewById(R.id.button2); 
    nxt = (Button)findViewById(R.id.button3); 

    movieList_detail = MainActivity.actorsList; 


    name.setText(name1); 
    dob.setText(dob1); 
    height.setText(height1); 
    country.setText(country1); 

new DownloadImageTask(img).execute(image1); 


    back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
     } 
    }); 

    prev.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      if(selected>0){ 

       selected--; 

       Actors m = movieList_detail.get(selected); 
       //String image = m.getThumbnailUrl(); 
       name.setText(m.getName()); 
       dob.setText(m.getDob()); 
       height.setText(m.getHeight()); 
       country.setText(m.getCountry()); 
      // img.DisplayImage(m.getImage(), image1); 


       nxt.setVisibility(View.VISIBLE); 
      }else 
      { 
       prev.setVisibility(View.GONE); 
      } 
     } 
    }); 

     nxt.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 

       if(selected<5){ 

        selected++; 

        Actors m = movieList_detail.get(selected); 
        //String image = m.getThumbnailUrl(); 
        name.setText(m.getName()); 
        dob.setText(m.getDob()); 
        height.setText(m.getHeight()); 
        country.setText(m.getCountry()); 
       // imageLoader.DisplayImage(m.getImage(), img); 

      prev.setVisibility(View.VISIBLE); 
      }else 
      { 
       nxt.setVisibility(View.GONE); 
      } 
     } 
    }); 


} 
+0

Я просто использовал его (новый DownloadImageTask (img) .execute (image1);) и получил ошибку в «DownloadImageTask», чтобы создать класс с именем «DownloadImageTask» .. :(. – Sudhansu

+0

Вам нужно создать DownloadImageTask как самостоятельный так что вы можете использовать как в SingleViewActivity, так и в ActorAdapter или других тисках, вы можете скопировать пасту в класс DownloadImageTask в SingleViewActivity от ActorAdapter –

+0

Done boss thank you boss :) теперь я вижу изображение в изображении, но еще одна вещь, пожалуйста, помогите мне показать изображение после нажав на следующую и предыдущую кнопку. Посмотрите, как я могу видеть изображение, когда я нажал на конкретный список, но после того, как я нажал на следующую кнопку, изображение останется таким же, пожалуйста, дайте мне vode для него. – Sudhansu

0

Я предполагаю, что изображение не отображается в элементе SingleView Activity.

img = (ImageView) findViewById (R.id.ivImage);

Далее устанавливаем значения для

name.setText(name1); 
dob.setText(dob1); 
height.setText(height1); 
country.setText(country1); 

Вы пропустили загрузку imgae в IMG. ли взглянуть на Пикассо для загрузки изображения Lib

+0

Спасибо за ответ vab, но я did not пропустил его, я действительно не знаю, как установить изображение в нем, потому что см., Чтобы показать текст, который мы должны установитьText, как это, чтобы показать изображение, что мы должны делать, и как я не знаю, поэтому, пожалуйста, позвольте я знаю, если вы что-то знаете об этом? – Sudhansu

+0

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

+0

Спасибо за предложение vab Позвольте мне попробовать его и сообщить об этом после этого. – Sudhansu

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

  • Нет связанных вопросов^_^