【问题标题】:How to get the real data text, with already substring text?如何获取带有子字符串文本的真实数据文本?
【发布时间】:2017-08-24 09:10:12
【问题描述】:

我正在创建一个目录电影应用程序。我有一个 ListView,其中包含 ImageView、标题、描述和发布日期。

在 ListView 中,我取了描述的子字符串,因为如果显示在 ListView 中会太长,现在我想在 DetailActivity (setOnItemClickListener) 中获取真实的描述。

这是我的代码:

try {
    String title = object.getString("title");
    String description = object.getString("overview");
    double movieRatet = object.getDouble("vote_average");
    String movieRate = new DecimalFormat("#.#").format(movieRatet);
    String releaseDate = object.getString("release_date");
    String posterUrl = object.getString("poster_path");
    posterUrl = POSTER_BASE_URL + "w185" + posterUrl;
    description = description.length() > 64 ? description.substring(0,64)+"...":description;

    Log.d("movie poster", posterUrl);
    Log.d("movie title ", title);
    Log.d("movie description ", description);
    Log.d("movie release ", releaseDate);

    this.title = title;
    this.description = description;
    this.rate = releaseDate;
    this.imgurl = posterUrl;


}catch (Exception e){

    e.printStackTrace();
}

这是我的OnItemClickListener

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getApplicationContext(), "Clicked"+position,Toast.LENGTH_LONG).show();


            RelativeLayout listItem = (RelativeLayout) view.findViewById(R.id.rl_item);
            TextView clickedItemView = (TextView) listItem.findViewById(R.id.tv_judul);
            TextView clickedItemView2 = (TextView) listItem.findViewById(R.id.tv_deskripsi);
            TextView clickedItemView3 = (TextView) listItem.findViewById(R.id.tv_rate);
            String title = clickedItemView.getText().toString();
            String desk = clickedItemView2.getText().toString();
            String rate = clickedItemView3.getText().toString();
            Intent i = new Intent(getApplicationContext(), DetailActivity.class);
            desk.substring(0);
            i.putExtra("title", title);
            i.putExtra("desk", desk);
            i.putExtra("rate", rate);
            startActivity(i);

        }

    });

DetailActivity的图片:

我想获得完整的描述,怎么做?

【问题讨论】:

  • 将所有参数传递给下一个活动。
  • 您的意思是可展开的列表视图吗? this 之类的东西?
  • 将所有(原始)数据保存在 modalclass 的数组列表中,并通过单击位置获取该特定对象并将该对象传递给下一个活动
  • 是的,您可以在意图中传递描述,然后您可以检索描述并访问值。
  • 你能举例代码吗? @BapusahebShinde 和 ABHISHEK HONEY

标签: java android listview substring


【解决方案1】:

您可以添加参数“fullMessage”来存储所有消息,并添加“描述”来存储一些消息。然后使用 i.putExtra("desk", fullMessage) 将完整消息携带到另一个活动。

另一种解决方案是将这些属性添加到 ListView 中的 TextView

 <TextView
 <!--  other value -->
 android:maxLines="3"
 android:ellipsize="end"/>

你可以把完整的消息放到这个TextView中,当消息太长时它会自动折叠。

【讨论】:

    【解决方案2】:

    只是不要覆盖您的描述变量。除了上面还有一个变量来保存您的截断值,比如概述。

    String overview = description.length() > 64 ? description.substring(0,64)+"...":description;
    

    那么您的描述变量将继续保持原始值。只需在需要的地方使用即可。

    【讨论】:

    • 对不起先生,我听不懂,我仍然需要那个子字符串代码,用于列表视图布局的描述
    • 是的,没错。所以你需要两个变量。一个变量,比如代码中的描述,保留原始值。另一个变量,overview(如上所述)保存截断值。在列表视图布局中,使用概览变量显示数据,而在详细视图中使用描述变量显示完整名称。字符串在 Java 中是不可变的,因此在描述字段上调用子字符串不会在那里截断它。它保持原样。
    • 好的,先生,但是如何获取描述变量??,,在我的主要活动(列表视图)中,我只是从列表视图中执行 putExtra
    • 就像您当前所做的一样,无需更改该实现。只需更改您传递的变量。您需要做的就是,就像您存储 this.description = 等的第一个示例代码一样,您可以在其中添加一个实例级变量来保存完整的描述和概述。然后,当您当前传递截断值时,将包含完整值的字段传递到下一个视图。我不能说你的课程,因为我不知道你的课程名称:)。
    • 酷。请接受答案并关闭它。
    【解决方案3】:

    试试这个:

    mymodalclass:make class
    
    public class MyModal {
    
        String title ;
        String description ;
        double movieRatet ;
        String movieRate;
        String releaseDate;
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    
        public double getMovieRatet() {
            return movieRatet;
        }
    
        public void setMovieRatet(double movieRatet) {
            this.movieRatet = movieRatet;
        }
    
        public String getMovieRate() {
            return movieRate;
        }
    
        public void setMovieRate(String movieRate) {
            this.movieRate = movieRate;
        }
    
        public String getReleaseDate() {
            return releaseDate;
        }
    
        public void setReleaseDate(String releaseDate) {
            this.releaseDate = releaseDate;
        }
    
        public String getPosterUrl() {
            return posterUrl;
        }
    
        public void setPosterUrl(String posterUrl) {
            this.posterUrl = posterUrl;
        }
    
        String posterUrl ;
    }
    

    //**********************************************

    while parsing data :
    

    Arraylist 列表 = 新的 ArrayList();

    for(int i=0;i<yourjsonarray.length();i++){
    JSONObject object = yourjsonarray.getJSONObject(i);
    MyModal m = new MyModal();
    m.setTitle(object.getString("title"));//like this set all data
    //now add this object to list
    list.add(m);
    
    }
    
    
    
    
    //now when you click list just get clicked position and by this position get that particular object and pass that to next activity
    ex: position = your_clicked_position
    MyModal clicked_modal_object = (MyModal) list.get(your_clicked_position);
    
    //now pass this clicked_modal_object  to next activity
    

    【讨论】:

    • aww,,我没明白对不起
    【解决方案4】:

    您可以使用两个变量。(我确定这是@Gautam 提到的)第一个是完整描述,第二个是简短描述。

      String description = object.getString("overview"); // full
      String shortDesc = description.length() > 64 ? description.substring(0,64)+"...":description; // add this to listView
      Log.d("movie description ", shortDesc);
    

    我想得到真实的描述,在 DetailActivity (setOnItemClickListener)

    点击按钮时,获取描述string

    i.putExtra("desk", description);
    

    注意:确保将描述设置为全局。

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多