2017-02-14 31 views
0

我有2個活動,其中一個有ListView,另一個有多行文本。每當我改變多行文本中的某個項目時,一個項目將被添加到ListView中,當我點擊該項目時,它會帶我到第二個活動來編輯我的文本。問題是整個文本添加到ListView項目。我可以create a short version of my text(開始10-20個字符),但是當我這樣做時,多行文本值也會改變。我該如何解決它?我想讓ListView項目顯示我的文本的簡短版本而不更改整個文本

我的主要活動代碼:

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.*; 
import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    static ArrayList<String> notelist = new ArrayList<String>(); 
    static ArrayAdapter notelistAdapter; 
    ListView noteslistView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     noteslistView = (ListView) findViewById(R.id.noteslist); 
     notelist.add("My Note"); 

     notelistAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, notelist); 
     noteslistView.setAdapter(notelistAdapter); 

     noteslistView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent addedit = new Intent(getApplicationContext(), EditNote.class); 
       addedit.putExtra("noteID", position); 
       startActivity(addedit); 
      } 
     }); 
    } 
} 

我EditNote活動代碼:

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.EditText; 

public class EditNote extends AppCompatActivity implements TextWatcher { 

    int noteID; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_edit_note); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 

     EditText editText = (EditText) findViewById(R.id.edittext); 
     editText.setGravity(Gravity.TOP); 

     Intent addedit = getIntent(); 
     noteID = addedit.getIntExtra("noteID", 0); 

     if (noteID != -1) 
     { 
      editText.setText(MainActivity.notelist.get(noteID)); 
     } 

     editText.addTextChangedListener(this); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 

     MainActivity.notelist.set(noteID, String.valueOf(s)); 
     MainActivity.notelistAdapter.notifyDataSetChanged(); 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
} 
+0

嘗試Elipsize http://stackoverflow.com/questions/19276320/edittext-ellipsize-three-dots – Tasos

回答

0

在你simple_list_item_1.xml,在那裏你定義的TextView您的ListView放像:

android:maxLines="1" 
    android:singleLine="true" 
    android:ellipsize="end" 

哎呀,我明白了,我不夠精確。提到的佈局是對作爲Android OS一部分的內置XML佈局文檔的引用,而不是您自己的XML佈局之一。你可以看到佈局代碼 https://github.com/android/platform_frameworks_base/tree/master/core/res/res/layout

我建議你做自己的佈局,包括我建議的代碼行,把它放在佈局文件夾中,並在你的代碼中引用它。

+0

它在哪裏?我找不到它。它不在「佈局」目錄中 –

+0

感謝您的回答,我在我的佈局文件夾中創建了一個xml文件,但是我的java文件找不到它。如果我做錯了,請告訴我。 –

+0

糟糕,我不應該在「android.R.layout.simple_list_item_1」中使用「android」(我創建了這個xml文件,就像你說的那樣)。它的工作。謝謝。 –

相關問題