2016-06-15 41 views
2

我試圖找到那個是動態創建的列表的字符串的下一次出現的某些字符串的下一次出現。首先,我創建帶有按鈕的列表,將文本保存到txt文件,然後用「,」將文件分割成列表,然後通過單擊列表中的項目更新列表旁邊的textview項目。C#查找列表

var it = lstv.GetItemAtPosition(e.Position);給出了從何處開始搜索下一個字符串的位置。下一個字符串是兩種可能性之一。

列表建立

string content; 
using (var streamReader = new StreamReader(filename)) 
{ 
content = streamReader.ReadToEnd(); 
} 
content = content.TrimEnd(','); 
char[] delimiterChars = { ',' }; 
data = content.Split(delimiterChars); 
var myAdapter = new ArrayAdapter(this, Resource.Layout.TextViewItem, data); 
lstv.Adapter = myAdapter; 

我發現只得到了第一個或最後出現的建議,但我有值的多次出現,我需要從下一次出現點擊位置

編輯: 應該提到有X個項目之間的起始位置和字符串我想獲得。

EDIT2:

名單是這樣的:

String 1 or String 2 
String x 
String x 
String x 
String x 
String 1 or String 2 
String x 
String X 
String 1 or String 2 

X的下一個字符串1或2我想變化之間串的量。當用戶點擊字符串1/2時,程序需要找到值爲字符串1或字符串2的下一個位置。

哦,是的,它給出了一個項目。當我得到下一個必需的字符串時,我可以獲得該項目的位置以及下一步我需要做的事情。對不起,如果我有點不太清楚。

EDIT3:

OnListItemClick方法

protected void OnListItemClick(object sender, AdapterView.ItemClickEventArgs e) 
    { 
     var it = lstv.GetItemAtPosition(e.Position); 
     View v = (sender as View); 
     int pos = lstv.GetPositionForView(v); 
     if (it.ToString().Equals("String1") || it.ToString().Equals("String2") 
     { 
       /*while (!it.ToString().Equals("String1") || !it.ToString().Equals("String2")) 
       { 
        it = lstv.GetItemAtPosition(e.Position + 1); 
        lstv.GetItemAtPosition(e.Position); 
        //lstv.SetSelection(e.Position); 
       }*/ 

       //it = lstv.GetItemAtPosition(e.Position - 1); 
       int itt = lstv.SelectedItemPosition; 
       txtv.Text = it.ToString(); 
       txtv2.Text = pos.ToString(); 
       txtv3.Text = itt.ToString();     
     } 
     else 
     { 
     // Some code here 
     } 
    } 

我試圖讓與View v = (sender as View);的位置,但它總是返回爲-1不管我單擊列表中的項目什麼位置。

在如果我點擊,例如串1的程序應該找到的下一個項目要麼是字符串1或字符串2,當發現,應該給該項目的位置的第二次出現在列表中。

while循環作品,如果我只搜索字符串1或2但如果我搜索兩者。我可能做了很多錯誤的事情,但是如果我能夠在尋找什麼的時候得到一點幫助,我會很感激。

回答

1

while循環就可以解決這個問題?

0

難道是:

返回lstv.GetItemAtPosition(e.Position ++);

+0

檢查我的編輯。這隻會得到列表中的下一個項目。 – GeeS

+0

你會使用while循環嗎? –

+0

嗯,如果我使用了兩個必需的字符串,它就會進入無限循環。有一個可搜索的字符串,但它的工作。 – GeeS

1

while循環的作品如果我只搜索字符串1或2,但不是如果我搜索兩者。

記住:(A || B)是一樣的(一個& & b!)

因此,你應該寫:

while (!it.ToString().Equals("String1") && !it.ToString().Equals("String2")) {